2 つの UIView があります。1 つ目は、 にオーバーフローする可能性のある可変数の UIButton を含みますtwo rows
。2 番目は 1 番目の下に配置する必要があります。
私は次のような多くの投稿を読みました: 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;
}