ios在Masonry中设置了uiscrollview的内容

时间:2015-12-07 10:06:01

标签: ios objective-c uiscrollview masonry

我使用纯代码(不是storyboard或xib)来设置所有视图的大小,我不想使用硬代码来设置框架,所以我使用了Masonry。

现在我有一个scrollView和一组视图作为scrollview的子视图,代码是这样的:

[self.scrollview addSubview:[self.imageviews objectAtIndex:0]];
[[self.imageviews objectAtIndex:0] mas_makeConstraints:^(MASConstraintMaker *make) {
    make.size.equalTo(self.scrollview);
    make.top.equalTo(@0);
    make.left.equalTo(@0);
}];
for (NSInteger i = 1; i < maxcnt ; i++) {
    [self.scrollview addSubview:[self.imageviews objectAtIndex:i]];
    UIImageView *previous = [self.imageviews objectAtIndex:i-1];
    [[self.imageviews objectAtIndex:i] mas_makeConstraints:^(MASConstraintMaker *make) {
        make.size.equalTo(self.scrollview);
        make.top.equalTo(@0);
        make.left.equalTo(previous.mas_right);
    }];
}

但问题出现了:

1)如何使用Masonry设置scrollview的contentsize?以下代码效果不佳,因为在旋转事件中,self.view.frame.size.width更改。

self.scrollview.contentSize = CGSizeMake(self.imageviews.count * self.view.frame.size.width, self.view.frame.size.height);

2)如果我必须使用上面的代码设置,如何处理旋转事件,以便contentsize更新。

1 个答案:

答案 0 :(得分:3)

你快到了。您所要做的就是在最后一个图像视图上设置一个正确的约束。通过这样做,您可以创建一个&#34;连接&#34;在contentView的左侧和右侧之间。这样UIScrollView&#34;就知道&#34;子视图需要多少空间并相应地调整contentSize

根本不需要设置contentSize。自动布局为您处理此问题,它也适用于旋转设备。

我刚才写了一篇blog post。它使用SnapKit,但基本上只是#34;与Swift&#34;的砌体的另一个名称。语法几乎相同。它描述了一个垂直滚动视图,但在水平视图上的想法是相同的。

还有一件小事:

而不是这样做:

make.top.equalTo(self.scrollview.mas_top);

你可以这样做:

make.top.equalTo(self.scrollview);