Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/100.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 在iphone/ipad中自动调整子视图的大小?_Ios_Objective C_Xcode_Autoresizingmask - Fatal编程技术网

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

Ios 在iphone/ipad中自动调整子视图的大小?,ios,objective-c,xcode,autoresizingmask,Ios,Objective C,Xcode,Autoresizingmask,我有一个视图(将其命名为“MyView”),其中我有4个子视图-例如2个UIImageView,2个UILabel。我必须将此视图放置在其他视图中(如果需要)。放置MyView时,我必须给出一个框架(任何框架)。根据给定给“MyView”的框架,子视图应根据位置和大小进行调整(根据原始位置和大小自动调整)。 如果我从“MyView”中删除4个子视图中的任何一个子视图,其余3个子视图应在“MyView”中自动调整。我应在不使用“AutoLayout”的情况下实现这一点,以支持旧版本。 我在IB中使

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


有谁能帮助我实现这一点。

没有自动布局,您无法完成任何现成的足够复杂的布局

您必须为
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;
    ...
}