2013-07-30 5 views
0

У меня есть подкласс UIView, который имеет свойство, называемое originalFrame.Как сохранить исходный фрейм подкласса UIView, загруженный из раскадровки автоматически

Я хочу, чтобы этот класс сохранил оригинал, это оригинальное значение фрейма после загрузки с раскадровки.

Я переопределен метод awakeFromNib:

-(void)awakeFromNib 
{ 
    self.originalFrame = self.frame; 
} 

Это работает, если вид контроллера представления его обособленно не изменяется сразу после того, чтобы соответствовать размеру экрана.

Тем не менее, контроллеры представлений в моем раскадровке предназначены для iPhone 4-дюймового экрана, поэтому, когда приложение работает на iPhone 3,5-дюймовый экран, awakeFromNib вызывается до того, как вид контроллера просмотра будет изменен в соответствии с 3,5-дюймовым экраном , Если мое подвью не привязано к вершине, то свойство originalFrame не будет отражать его фрейм после изменения размера.

Я смог переопределить layoutSubviews, чтобы получить свойство кадра после изменения размера представления контроллера представления, но этот метод также называется другим, и у меня нет способа узнать, соответствует ли начальный размер размеру экрана или что-то другое.

Есть ли способ сделать это без необходимости устанавливать это свойство вручную в каждом конкретном случае в методе viewDidLoad контроллера вида?

ответ

0

Вы можете проверить, установлено ли это значение, если вы установите его в awakeFormNib на CGRectZero и зарегистрируйтесь в layoutSubviews, если это CGRectZero. Установите только рамку в layoutSubviews, если это CGRectSubviews.

Смежные вопросы