2013-08-15 3 views
0

Метод на stackoverflow для установки кнопки не работает. Я используюКак изменить положение кнопок. object-c

self.todayButton.frame = CGRectMake(0, self.todayButton.frame.origin.y, self.todayButton.frame.size.width, self.todayButton.frame.size.height); 

Я думаю, что это проблема автоотключения, но я не уверен, как исправить.

ответ

5

Это проблема с Autolayout. Но вы не можете отключить autolayout по определенному виду в наконечнике. Он должен быть отключен на всем протяжении. Лучше решение использовать setTranslatesAutoresizingMaskIntoConstraints на эту кнопку:

[self.todayButton setTranslatesAutoresizingMaskIntoConstraints:YES]; 
+0

Hii, когда я это делаю, он записывает в журнал так: Невозможно одновременно удовлетворить ограничениям. Вероятно, хотя бы одно из ограничений в следующем списке - это тот, который вы не хотите. Попробуйте это: (1) посмотрите на каждое ограничение и попытайтесь выяснить, чего вы не ожидаете; (2) найти код, который добавил нежелательные ограничения или ограничения и исправить его. (Примечание. Если вы видите NSAutoresizingMaskLayoutConstraints, которые вы не понимаете, обратитесь к документации для свойства UIView translatesAutoresizingMaskIntoConstraints – Nisha

+0

Будет пытаться восстановить с помощью ограничения прерывания Перерыв на objc_exception_throw, чтобы поймать это в отладчике. Методы в категории UIConstraintBasedLayoutDebugging в UIView, перечисленные в < UIKit/UIView.h> также может быть полезен. – Nisha

+0

как это решить ?? пожалуйста, скажите мне – Nisha

1

Это могло бы стоить Расщепление этот код так, вы можете увидеть, что новый кадр выглядит следующим образом:

CGRect newFrame = self.todayButton.frame; 
NSLog(@"Old: %@", NSStringFromCGRect(newFrame)); 
newFrame.origin.x = 0; 
NSLog(@"New: %@", NSStringFromCGRect(newFrame)); 
self.todayButton.frame = newFrame; 

ли воспроизводимый кадр выглядеть так, как вы ожидали?

+0

Старый: {{569, 13}, {73, 44}} Новое: {{0, 13}, {73, 44}} кнопку остается там, где он есть. – user1898829

+0

Ну, по крайней мере, вы это исключили! Я надеюсь, что ответ Puneet выше поможет решить проблему. Удачи. – James

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