添加对象后,为什么UIScrollView不能完全滚动?使用storyboard,ARC和Xcode 4.5.2

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)

它现在看起来很完美.请任何人,让我知道这是否是一个糟糕的方式,因为我是新来的,我会很乐意帮助.否则,我会离开它,希望这可以帮助其他人!谢谢!