【发布时间】:2015-08-05 23:31:43
【问题描述】:
为了试验自动布局和 uiscrollview,我一直在使用 this example
我已经编辑为在滚动视图中包含 2 个视图,我已经设置了自动布局约束以将视图水平相邻放置,并且它们的大小设置为填充滚动视图框架。
UIView *beeView = [[[NSBundle mainBundle] loadNibNamed:@"BeeView" owner:nil options:nil] firstObject];
beeView.translatesAutoresizingMaskIntoConstraints = NO;
[self.scrollView addSubview:beeView];
UIView *beeView2 = [[[NSBundle mainBundle] loadNibNamed:@"BeeView" owner:nil options:nil] firstObject];
beeView2.backgroundColor= [UIColor orangeColor];
beeView2.translatesAutoresizingMaskIntoConstraints = NO;
[self.scrollView addSubview:beeView2];
NSDictionary *views = @{@"beeView":beeView,@"beeView2":beeView2, @"scrollView":self.scrollView};
NSDictionary *metrics = @{@"height" : @200};
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"H:|[beeView(==scrollView)][beeView2(==beeView)]|" options:NSLayoutFormatAlignAllTop | NSLayoutFormatAlignAllBottom metrics:metrics views:views]];
[self.scrollView addConstraints:[NSLayoutConstraint constraintsWithVisualFormat:@"V:|[beeView(==scrollView)]|" options:kNilOptions metrics:metrics views:views]];
这很好地产生了我的意图。
但是,如果滚动视图的contentOffset 不为零并且设备从纵向旋转到横向,则滚动视图的内容偏移量会自动设置为32px。 (见截图)
我尝试保存 contentOffset 并在调用 scrollViewDidEndDecelerating: 时将其设置为这个保存的值,这可以工作,但很难看,因为滚动视图滚动到 32px 偏移量,然后返回到我想要的位置。
如何控制滚动视图的contentOffset?自动布局约束是否错误?在调整视图大小时,我是否可以添加额外的约束来控制contentOffset?
【问题讨论】:
-
尝试将
H:|[beeView(==scrollView)][beeView2(==beeView)]|更改为H:|-[beeView(==scrollView)]-[beeView2(==beeView)]-|
标签: ios objective-c uiscrollview autolayout