0

私は4つのサブビューを持つビュー(「MyView」と名付けます)を持っています-たとえば、2つのUIImageView、2つのUILabelです。このビューを他のビューに配置する必要があります(必要な場所)。フレーム(任意のフレーム)。「MyView」に指定されたフレームに従って、サブビューは位置とサイズによって調整されます(元の場所とサイズに応じて自動調整されます)。「MyView」から 4 つのサブビューのいずれかを削除すると、残りの 3 つのサブビューは「MyV​​iew」内で自動的に調整されます。古いバージョンをサポートするには、「AutoLayout」なしでこれを達成する必要があります。IB で AutoresizingMask プロパティを使用しましたが、望ましい結果が得られませんでした。

これを達成する方法について誰かが私を助けることができますか?

4

1 に答える 1

0

Autolayout がなければ、すぐに満足できるレイアウトを行うことはできません。

のカスタム サブクラスを作成する必要がありますMyView。次に、それを上書きしてlayoutSubviews(ビューのフレームが変更されるたびに呼び出されます)、サブビューの位置とサイズを変更します。

@interface MyView : UIView
@property (weak, nonatomic) IBOutlet UIImageView *iv1;
@property (weak, nonatomic) IBOutlet UIImageView *iv2;
@property (weak, nonatomic) IBOutlet UILabel *label1;
@property (weak, nonatomic) IBOutlet UILabel *label2;
//...
@end

@implementation MyView

- (void)layoutSubviews
{
    CGRect frame = self.iv1.frame;
    frame.origin.x = someValue * self.bound.size.width;
    frame.origin.y = ...;
    self.iv1.frame = frame;
    ...
}
于 2013-04-05T10:56:17.317 に答える