我有两个 UIView。第一个包含可变数量的 UIButtons,它们可能会溢出到two rows
. 第二个需要位于第一个下方。
我读过很多这样的帖子:如何定位 UIView?
不幸的是,这些似乎只有在您在viewDidAppear:
方法中或以后调用它们时才有效。这意味着在我的视图加载和我的元素正确定位之间有很短的时间。
我怎样才能优雅地解决这个问题?
编辑1:这是我使用向下调整view2的一个简单方法
-(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;
}