В любом случае, чтобы получить кадр с автоматическим изменением размера UIVIew?

У меня есть UIButton, для которого настроено автоматическое изменение размера в зависимости от вида части (4-дюймовый экран iPhone 5). У меня есть изображение границы, которое я показываю вокруг кнопки после ее выбора. Проблема в том, что фрейм UIButton возвращает исходный размер даже при автоматическом изменении размера, поэтому я не могу установить фрейм изображения границы, чтобы он соответствовал ему.

Есть ли способ получить рамку после авторесайза?


person tbag    schedule 24.06.2013    source источник


Ответы (2)


Вы пробовали UIViewController viewDidLayoutSubviews? Он не такой детальный, как layoutSubviews, предназначенный для отдельных представлений, но его может быть достаточно в зависимости от ваших потребностей.

person herzbube    schedule 24.06.2013
comment
Я пробовал это. Но он не возвращает автоматический размер кадра представления. viewDidLayoutSubviews вызывается перед viewDidAppear. Но viewDidAppear также не возвращает кадр с автоматическим размером - person tbag; 25.06.2013

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

-(void) layoutSubviews
{
   [super layoutSubviews];

   //Logic to layout your custom views would go at this point, i.e.

   CGRect buttonFrame = CGRectInset([self bounds], 0, 0);
   [[self button] setFrame:buttonFrame];      
}
person ephilip    schedule 24.06.2013
comment
layoutSubviews - это метод UIView, верно? Мне, вероятно, придется создать подкласс UIButton? - person tbag; 24.06.2013
comment
это метод UIViewController. этот метод должен идти в viewController, содержащем UIButton (и даже позволяя вам подключить его в раскадровке/XIB). В моем примере у меня есть UIButton, установленный как переменная экземпляра viewController. Я не понимаю, почему вам нужно создавать подклассы UIButton. - person ephilip; 25.06.2013
comment
Я думаю, вы ошиблись. На самом деле это метод UIView. developer.apple.com/library/ios /#documentation/UIKit/Справочник/. Так что я думаю, мне придется создать подкласс UIButton. - person tbag; 25.06.2013
comment
Вы правы - я запутался с viewDidLayoutSubviews. Я обновлю свой ответ. - person ephilip; 25.06.2013