UIScrollView作为UIView的子视图不适用于autolayout

时间:2016-03-24 12:11:53

标签: ios autolayout scrollview masonry

我创建了一个包含UIScrollView作为其子视图的customView(UIView),以及 我放在scrollView上的对象没有显示。为了测试它,我向scrollView添加了一个UIView,它也没有显示(参见下面的代码示例)。由于我想在scrollView上放置的内容是动态的,我想通过使用AutoLayout来解决问题。我尝试了不同的方法并在线跟踪说明,没有一个工作,所有类似的问题都是在UIViewController内部创建的UIScrollView。

这是我的代码,我正在使用Masonry:

@interface CustomView : UIView

@end

@implementation CustomView

- (instancetype)init {
    if (self = [super init]) {

        self.scrollView = [[UIScrollView alloc]init];
        self.scrollView.backgroundColor = [UIColor redColor];
        [self addSubview:self.scrollView];
        [self.scrollView mas_makeConstraints:^(MASConstraintMaker *make) {
            make.edges.equalTo(self);
        }];

    //Here I add someView to the scrollView, and when I create an instance of the scrollView, the someView does not show.

    self.someView = [[UIView alloc]init];
    self.someView.backgroundColor = [UIColor blackColor];
    [self.scrollView addSubview:self.someView];        
    [self.someView mas_makeConstraints:^(MASConstraintMaker *make) {
        make.edges.equalTo(self.scrollView);
        make.size.equalTo(CGSizeMake(40, 40));
    }];
}
return self;
}

以下是我创建CustomView实例的方法

CustomView *customView = [[CustomView alloc]init];
[self.view addSubview: customView];
[customView mas_makeConstraints:^(MASConstraintMaker *make) {
    make.top.equalTo(64.0);
    make.height.equalTo(40.0);
    make.leading.trailing.equalTo(0);
}];

是否有任何遗漏或错误导致某些视图无法显示?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我通过以下方式解决了问题:1)。直接使用scrollView而不是UIView(我的customView)中的subView。 2)确保添加scrollView的右边和底部约束。