【问题标题】:auto resizing sub views in iphone/ipad?在 iphone/ipad 中自动调整子视图的大小?
【发布时间】:2013-04-05 18:56:17
【问题描述】:
我有一个视图(将其命名为“MyView”),其中有 4 个子视图 - 比如说 2 个 UIImageView,2 个 UILabel。我必须将此视图放置在其他视图中(需要的地方)。同时放置 MyView 我有给出一个框架(任何框架)。根据给“MyView”的框架,子视图应该按位置和大小进行调整(根据原始位置和大小自动调整)。
如果我从“MyView”中删除 4 个子视图中的任何 1 个,则其余 3 个子视图应在“MyView”中自动调整。我应该在没有“AutoLayout”的情况下实现这一点来支持旧版本。
我在 IB 中使用了 AutoresizingMask 属性,但没有得到想要的结果。
任何人都可以帮助我如何实现这一目标。
【问题讨论】:
标签:
ios
objective-c
xcode
autoresizingmask
【解决方案1】:
如果没有自动布局,您将无法进行任何开箱即用的布局。
您必须为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;
...
}