我有兩個UIViews。第一個包含可能溢出到two rows
的可變數量的UIButton。第二個需要定位在第一個之下。以編程方式定位UIView之前viewDidAppear
我看了很多帖子是這樣的:How to position a UIView?
不幸的是,這些似乎如果在viewDidAppear:
方法或以後打電話給他們,只是工作。這意味着我的視圖加載時間和我的元素正確定位之間的時間很短。
我該如何優雅地解決這個問題?
編輯1: 這裏有一個簡單的方法,我使用的是調整視圖2向下
-(void)adjustView:(UIView *)view down:(int)down{
CGRect frame = view.frame;
frame.origin.y = frame.origin.y + down;
view.frame = frame;
}
編輯2: 這有點像我如何加入我的按鈕,調整我的第一個觀點,並計算如何到目前爲止,下一個需要往下走
- (void)addButtonsToView:(NSArray *)buttonStrings {
//To correctly position
float previousTagsWidth = 0.0;
self.adjustDown = 0.0;
for (NSString *str in buttonStrings) {
UIButton *button = [UIButton buttonWithType:UIButtonTypeRoundedRect];
[button setTitle:str forState:(UIControlState)UIControlStateNormal];
CGSize size = [str sizeWithFont:TAG_FONT];
if (previousTagsWidth + size.width > 300) {
previousTagsWidth = 0;
self.adjustDown += size.height+10;
}
button.frame = CGRectMake(previousTagsWidth, self.adjustDown, size.width+10, size.height+5);
previousTagsWidth += size.width+20;
[self.view1 addSubview:button];
}
CGRect frame = self.view1.frame;
frame.size.height = frame.size.height+self.adjustDown;
self.view1.frame = frame;
}
蘋果文件你看了'viewWillAppear'方法?這是在視圖控制器的視圖添加到窗口之前調用的,並允許您在子視圖變爲可見之前對其進行佈局。 –
@AlexMDC在viewWillAppear中,我和viewDidLoad中的問題完全相同。 viewDidAppear中的相同確切方法按預期工作。 – scottmrogowski
什麼時候以及如何創建你的UIButton? – Cyrille