我的應用程序使用故事板和自動佈局。在視圖控制器中,我創建了一個UIScrollView
並添加了三個子視圖。滾動UIScrollView更改其子視圖框架
在運行時,我需要更改子視圖的大小並重新排列它們。最初,我重新排列它們在viewDidLayoutSubviews
,它似乎工作,直到我滾動滾動視圖。然後將子視圖框更改回在IB中設置的尺寸。 (我重新安排意見,並刪除所有UIViewConstraints
時設置UIScrollView
的內容大小。)
我的應用程序使用故事板和自動佈局。在視圖控制器中,我創建了一個UIScrollView
並添加了三個子視圖。滾動UIScrollView更改其子視圖框架
在運行時,我需要更改子視圖的大小並重新排列它們。最初,我重新排列它們在viewDidLayoutSubviews
,它似乎工作,直到我滾動滾動視圖。然後將子視圖框更改回在IB中設置的尺寸。 (我重新安排意見,並刪除所有UIViewConstraints
時設置UIScrollView
的內容大小。)
框架和Auto Layout
不走在一起,如果你正在使用Auto Layout
你需要重新安排約束,而不是幀。使用Auto Layout
更改相框會導致一些奇怪的效果,並最終回到您在原始UIView
中創建的約束。
一些解決方案:
Auto Layout
。第一個解決方案工作,與IBOutlet幾乎沒有約束+很少限制幫助我做我需要什麼,感謝您的快速答案。 –
我正在使用自動佈局。並正常工作。我有一個uiscrollview,它包含3-4個圖像。這取決於有多少圖像。當我嘗試全屏顯示當前圖像,我使用的是functioni希望works.its這樣的:
- (無效){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;
}
}
如果你需要改變幀運行。 yoiu將需要爲該視圖控制器禁用「自動佈局」 –