Lar*_*ses 8 iphone storyboard uiscrollview ios autolayout
所以,我知道我的问题也有类似的问题,但也许并不准确(所以请不要让我失望 - 只是警告我或者别的什么).我已经搜索了解决这个简单问题的日子.使用故事板,ARC和Xcode 4.5.2,我只需要在UIScrollView中放置一堆标签并让它垂直滚动.我在viewDidLoad,viewDidAppear和viewWillAppear中尝试了很多设置帧大小和内容大小的组合,但无济于事.滚动视图在其内部没有任何内容时完美滚动,但是当我向其添加标签时,滚动仅滚动非常短的部分.
注意:我需要使用自动布局,否则我的整个项目都会搞砸.
这是我目前的代码......
.h文件:
#import <UIKit/UIKit.h>
@interface MortgageRatesViewController : UIViewController <UIScrollViewDelegate, UIScrollViewAccessibilityDelegate>
- (IBAction)backButton:(id)sender;
@property (strong, nonatomic) IBOutlet UIView *mortgageView;
@property (weak, nonatomic) IBOutlet UIScrollView *scrollView;
@end
Run Code Online (Sandbox Code Playgroud)
.m文件:
#import "MortgageRatesViewController.h"
@interface MortgageRatesViewController ()
@end
@implementation MortgageRatesViewController
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
//-------------------------------------------------------
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view.
self.view.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"appBackgroundColor.png"]];
[self.scrollView setScrollEnabled:YES];
[self.scrollView setContentSize:CGSizeMake(0, 809)];
}
//---------------------------------------------------------------
//---------------------------------------------------------------
//-(void)viewWillAppear:(BOOL)animated{
//
//
// [super viewWillAppear:animated];
//
//
// [self.scrollView setFrame:CGRectMake(0, 0, 320, 808)];
//
//
//}
//---------------------------------------------------------------
-(void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
[self.view addSubview:self.scrollView];
[self.scrollView setScrollEnabled:YES];
[self.scrollView setContentSize:CGSizeMake(0, 809)];
}
//-------------------------------------------------------------
- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}
- (IBAction)backButton:(id)sender {
[self dismissViewControllerAnimated:YES completion:NO];
}
@end
Run Code Online (Sandbox Code Playgroud)
注意:将viewWillAppear注释掉后没有任何区别.
编辑:我发布了解决方案.希望它能帮助其他人!
Lar*_*ses 39
经过几天的研究,有趣的是我在发布这个问题后几分钟就找到了解决方案!所以,对于我的情况,我只需要添加这段代码,它有效:
- (void)viewDidLayoutSubviews
{
[super viewDidLayoutSubviews];
[self.scrollView setContentSize:CGSizeMake(320, 808)];
}
Run Code Online (Sandbox Code Playgroud)
它现在看起来很完美.请任何人,让我知道这是否是一个糟糕的方式,因为我是新来的,我会很乐意帮助.否则,我会离开它,希望这可以帮助其他人!谢谢!