Автоматическое изменение размеров просмотров в 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;
...
}