2016-08-30 6 views
0

次のイメージを考慮すると、オブジェクトBは内部のUILabelsの数に基づいて高さが動的になります。 オブジェクトBの高さは、オブジェクトCの高さに影響する必要があります。ストーリーボードのUIViewの高さを、別のUIViewsの高さに基づいて動的に変更します。

私は現在ストーリーボードに実装していますが、私はこれらの2つのことに固執しています。 (私のデプロイメント・ターゲットは7.1であるように私はスタックビューを使用することはできません) それは

[uiview] - [uilabel] 

オブジェクトCはUIViewのだと私はその高さを達成するために、オブジェクトBの高さをご希望ですか?リストを繰り返している必要がありますかどうすればそれを達成できますか?

enter image description here

+1

いくつかのコードを見ずに答えるのは難しいです。私は各オブジェクト(object.frame.origin.Yとobject.frame.size.height)の高さとY位置を計算し、それらをNSMutablearrayにロードします。次に、すべての要素のサイズを変更する必要があるたびに呼び出すメソッドを作成します。このメソッドでは、配列要素に基づいて各要素の相対位置と高さを再割り当てします:[object setFrame:CGRecMake(...)]; – Alex

+0

ストーリーボード(使用している場合)で行うことができます。BとCの等高さの制約を設定し、必要に応じてそれらの比率を変更するだけです。その後、Bの高さの制約が更新されるたびにCも自動的に更新されます'layoutIfNeeded' with – Tj3n

+0

' UILabels'をObject ** C **にどのように追加しますか? –

答えて

2

あなたはコード

int lblY = 10; // As per your requirement 
int viewBHT = 50; // As per your requirement 

UILabel *lbl; 

NSMutableArray *arrLbl = [[NSMutableArray alloc] initWithObjects:@"1",@"1",@"1",@"1",@"1",@"1", nil]; 

UIView *viewB = [[UIView alloc] init]; 
[viewB setFrame:CGRectMake(0, viewA.frame.origin.y, self.view.frame.size.width, viewBHT)]; 
[viewB setBackgroundColor:[UIColor darkGrayColor]]; 
[self.view addSubview:viewB]; 

for (int i = 0; i < arrLbl.count; i++) 
{ 
    lbl = [[UILabel alloc] initWithFrame:CGRectMake(10, lblY , viewB.frame.size.width - 20, 30)]; 
    [lbl setText:[NSString stringWithFormat:@"Hello %d",i]]; 
    [lbl setBackgroundColor:[UIColor lightGrayColor]]; 
    [viewB addSubview:lbl]; 

    lblY = lblY + lbl.frame.size.height + 10; 
} 

viewBHT = lbl.frame.size.height + lbl.frame.origin.y + 10; 
[viewB setFrame:CGRectMake(0, 80, self.view.frame.size.width, viewBHT)]; 

UIView *viewC = [[UIView alloc] init]; 
[viewC setFrame:CGRectMake(0, viewB.frame.origin.y + viewB.frame.size.height + 10, self.view.frame.size.width, 50)]; 
[viewC setBackgroundColor:[UIColor blueColor]]; 
[self.view addSubview:viewC]; 

のこのタイプを使用することができ、これは..あなたを助けることを願っています! :)

関連する問題