0

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

任何人都可以帮助我如何实现这一目标。

4

1 回答 1

0

Without Autolayout you can't do any suffisticated layout out of the box.

You would have to write a custom subclass for MyView. You then overwrite it's layoutSubviews (this is beeing called everytime the view's frame changes) to reposition and resize your subviews.

@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 回答