Подтвердить что ты не робот

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)];
}
4b9b3361

Ответ 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];