我的应用使用了故事板和自动布局。在视图控制器中,我创建了一个UIScrollView
并添加了三个子视图。
在运行时,我需要更改子视图的大小并重新排列它们。最初,我在viewDidLayoutSubviews
重新排列它们,它似乎工作,直到我滚动滚动视图。然后将子视图帧改变回IB中设置的大小。 (我在重新排列视图并删除所有UIScrollView
时设置了UIViewConstraints
的内容大小。)
答案 0 :(得分:2)
框架与Auto Layout
不在一起,如果您使用Auto Layout
,则需要重新排列约束,而不是框架。使用Auto Layout
时更改帧会导致一些奇怪的效果,并最终会恢复为您在原始UIView
中创建的约束。
一些解决方案:
Auto Layout
。答案 1 :(得分:0)
我正在使用自动布局。并且正常工作。我有一个uiscrollview,它包含3-4张图片。这取决于有多少图像。当我尝试制作全屏当前图像时,我正在使用功能,希望它有效。就像这样:
- (void)growImg {
if (self.growImgNeed) {
self.Scroller.frame=CGRectMake(0, 100, 320, 376);
CGRect ViewSize = Scroller.bounds;
for(int i=0;i< Scroller.subviews.count;i++){
[[self.Scroller.subviews objectAtIndex:i] setSize:CGSizeMake(320, 376)];
[[self.Scroller.subviews objectAtIndex:i] setFrame:ViewSize];
ViewSize = CGRectOffset(ViewSize, Scroller.bounds.size.width, 0);
}
Scroller.contentSize = CGSizeMake((Scroller.subviews.count) * Scroller.bounds.size.width, Scroller.bounds.size.height);
self.growImgNeed=false;
}
else {
self.Scroller.frame=CGRectMake(80, 82, 160, 188);
CGRect ViewSize = Scroller.bounds;
for(int i=0;i< Scroller.subviews.count;i++){
[[self.Scroller.subviews objectAtIndex:i] setSize:CGSizeMake(160, 188)];
[[self.Scroller.subviews objectAtIndex:i] setFrame:ViewSize];
ViewSize = CGRectOffset(ViewSize, Scroller.bounds.size.width, 0);
}
Scroller.contentSize = CGSizeMake((Scroller.subviews.count) * Scroller.bounds.size.width, Scroller.bounds.size.height);
self.growImgNeed=true;
}
}