IOS не может изменить кадр UIButton
В настоящее время я придерживаюсь очень странной проблемы. Я использую iOS 6 и Xcode 4.5. У меня есть раскадровка с UIViewController
и UIButton
. Я сделал слабый выход UIButton
в файл .h.
В .m файле я хочу изменить кадр кнопки, но ничего не происходит. Но у меня есть UIImageView
, созданный и подключенный так же, как и UIButton
, но я могу без проблем изменить кадр UIImageView
.
Когда я это сделаю:
NSLog(@"%@", button)
Я получаю этот вывод:
<UIButton: 0xa185a40; frame = (191 330; 73 44); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0xa185640>>
И это соответствующие части моего кода:
-(void)viewDidLayoutSubviews{
[self addStampGrid];
}
-(void)addStampGrid {
// ...
[_button setFrame:CGRectMake(10,10,10,10)];
}
Ответы
Ответ 1
У меня была такая же странная проблема, что и XCode 4.5 и iOS 6 в качестве цели развертывания. Однако я не использую рассказ.
Мне удалось решить эту проблему, отключив опцию "Использовать автозапуск" в Interface Builder. (В документе "Инспектор файлов- > Документ компоновщика интерфейса".
Надеюсь, что это поможет
Ответ 2
Вы можете изменить рамку своего UIButton, изменив рамку слоя UIButton
[self.button.layer setFrame:]
импортируйте среду QuartzCore в свой класс, прежде чем использовать это.
Это также будет работать с авто-макетом.
Ответ 3
Вы можете использовать этот
[_button setTranslatesAutoresizingMaskIntoConstraints:YES];
после этого вы можете установить рамку своей кнопки.
Он может давать некоторые предупреждения в журнале об ограничениях, поскольку это свойство переопределяет ограничения, которые вы дали при автоопределении.
Ответ 4
Удалить представление из супервизора и после установки рамки снова добавить это представление в качестве подвью. Надеюсь, это сработает нормально...
Ответ 5
//Удалить представление из супервизора
UIView *view = yourButton.superview;
[yourButton removeFromSuperview];
//изменить кадр UIButton
CGRect bounds = view.bounds;
yourButton.center = CGPointMake(CGRectGetMidX(bounds), CGRectGetMidY(bounds));
//снова добавим этот вид в качестве подвью
[view addSubview:yourButton];