更改 UIScrollview 的框架在 iOS xcode 中不起作用

changing frame of UIScrollview not working in iOS xcode

我不知道我做错了什么。

我在IB中拖出UIScrollView,连接到UIViewController.h

@property (strong, nonatomic) IBOutlet UIScrollView *scrollView;

在UIViewController.m

- (void)viewDidLoad {
    [super viewDidLoad];
    _scrollView.frame = CGRectMake(0, 200, 300, 500);
    _scrollView.contentSize = CGSizeMake(300, 600);
    _scrollView.backgroundColor = [UIColor grayColor];
    NSLog(@"x-pos:%f y-pos:%f width:%f height:%f of uiscrollview", _scrollview.frame.origin.x, _scrollview.frame.origin.y, _scrollview.frame.size.width, _scrollview.frame.size.height);
}

我得到 NSLog :

x-pos:0.000000 y-pos:200.000000 width:300.000000 height:500.000000 of uiscrollview

但是我什么也没看到...

我用谷歌搜索了一下,发现可能是因为启用了自动布局?

我猜自动布局将我的 UIScrollView 的高度和宽度设置为 0。

但我需要为其他元素使用自动布局。

我做错了什么?

contentSize是滚动视图的滚动区域,frame(或bounds)是你设置的frame的大小。您可以想象框架是您在界面上看到的 window,但 contentSize 和 contentOffset 表示滚动视图中的整个区域。

试试这个

- (void)viewDidLayoutSubviews {
    [super viewDidLayoutSubviews];
    _scrollView.frame = CGRectMake(0, 200, 300, 500);
    _scrollView.contentSize = CGSizeMake(300, 600);
    _scrollView.backgroundColor = [UIColor grayColor];
    NSLog(@"x-pos:%f y-pos:%f width:%f height:%f of uiscrollview", _scrollview.frame.origin.x, _scrollview.frame.origin.y, _scrollview.frame.size.width, _scrollview.frame.size.height);
}