Автоматическое изменение размеров просмотров в iphone/ipad?

У меня есть представление (назовите его как "MyView"), в котором у меня есть 4 подпредставления - скажем, 2 UIImageView, 2 UILabel's. Мне нужно поместить это представление в другое представление (где это когда-либо требуется). При размещении MyView я должен дать frame (любой кадр). В соответствии с кадром, заданным для "MyView", подпредставление должно быть отрегулировано по позиции и размеру (автоматическая настройка в соответствии с исходным местом и размером). Если я удаляю 1 из 4 подпредставлений из "MyView", остальные 3 подпредставления должны автоматически настраиваться в "MyView". Я должен достичь этого без "AutoLayout" для поддержки более старых версий. Я использовал свойства AutoresizingMask в IB, но не получил желаемого результата.

Может ли кто-нибудь помочь мне в том, как этого добиться.

1 ответ

Без 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;
    ...
}
Другие вопросы по тегам