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