自动调整iphone / ipad中的子视图大小?

时间:2013-04-05 10:39:25

标签: ios objective-c xcode autoresizingmask

我有一个视图(将其命名为“MyView”),其中我有4个子视图 - 比如2个UIImageView,2个UILabel。我必须将此视图放在其他视图中(无论何时需要)。放置MyView我有给出一个框架(任何框架)。根据“MyView”给出的框架,子视图应根据位置和大小进行调整(根据原始位置和大小自动调整)。 如果我从“MyView”中删除4个子视图中的任何一个,则剩余的3个子视图应自动在“MyView”中调整。我应该在没有“AutoLayout”的情况下实现这一点,以支持旧版本。 我在IB中使用过AutoresizingMask属性,但没有得到所需的结果。

任何人都可以帮我解决这个问题。

1 个答案:

答案 0 :(得分: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;
    ...
}