我有一個視圖,其子視圖的框架需要根據用戶操作進行動態更改。當視圖被加載,我初始化其子視圖這樣的:在iOS應用程序中動態更改子視圖框架
if (self.firstSubview == nil) {
NSArray* views = [[NSBundle mainBundle] loadNibNamed:@"FirstSubView" owner:self options:nil];
for (UIView *view in views) {
self.firstSubview = view;
}
}
然後:
[self.view addSubview:self.firstSubview];
初始化後,當我想修改子視圖的框架,我做這樣的事情:
self.firstSubview.frame = CGRectMake(0, 80, self.firstSubview.frame.size.width, 200);
我想要做的是在用戶點擊一個按鈕時調整子視圖的Y座標及其高度,並在用戶再次點擊該按鈕時將子視圖的原始幀取回。但是,我發現有時這不起作用,Y座標和高度似乎並不總是像我在CGRectMake
函數中所說的那樣設置。它看起來像函數不總是取絕對值,而是取決於最後一幀的值,而是......我的意思是,看起來並不總是這個函數調用後框架取Y = 80座標。
也許我誤解是如何工作的:在意見nib
文件,我已經在其Simulated Metrics
設置頂部和底部的酒吧,所以視圖的高度應該是那些酒吧和(0,0)之間的剩餘空間座標應該是頂部欄下方的左上角,對吧?有什麼我失蹤?每次我想改變其框架時,是否應該重新初始化並添加子視圖?或者還有什麼我應該做的應用框架的變化?
在此先感謝
不,你不應該每次重新初始化子視圖?你是否也爲你的子視圖使用了一個nib文件?它是否也包含模擬指標? – streem
是的,我有我的子視圖在另一個'nib'文件沒有模擬度量設置... – AppsDev