Вот странная вещь, но я не мог понять. Я не могу программно установить фрейм для кнопки.
У меня есть кнопка с IBOutlet как beyondViewButton, и я управляю ее перетаскиванием из представления в файл ViewController.m file @interface и @end, а затем @synthesized.
в методе viewDidLoad, я добавил следующее:
//x = x + widthToUse * 0.25;
//y += h + 50;
x = 50; //either hard code x value or set it mathematically, not working
y = 300;
w = 200;
h = 60;
//[beyondViewButton setFrame:CGRectMake(x, y, w, h)]; //not working
beyondViewButton.frame = CGRectMake(x, y, w, h); //not working
//[beyondViewButton setBackgroundImage:[UIImage imageNamed:@"bgImage.png"] forState:UIControlStateNormal]; //this line actually works
//[beyondViewButton setTitle:@"iCool!" forState:UIControlStateNormal];
[beyondViewButton setTitle:@"iShit!" forState:UIControlStateNormal]; //change from iCool to iShit, I can see change
//[self.view addSubview:beyondViewButton]; //either adding this line or not, both work
Почему я не могу настроить фрейм?
Одна вещь, я не знаю, если уместно, заключается в том, что эта кнопка была настроена в "представлении выбора", который поступает с контроллера навигации и переходит к следующему представлению/сцене. Когда эта кнопка нажата, приложение переходит из "представления выбора" в следующий вид - это было реализовано через раскадровку. Я еще не освоил раскадровку, и у меня много неуверенности.
Может ли кто-нибудь пролить свет на это? Спасибо!!
Дополнительная информация о диагнозе: Я проверил button.description до и после того, как я установил код кадра:
2012[25830:12503] beyond button <UIRoundedRectButton: 0x8821cd0; frame = (0 0; 0 0); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0x8821da0>>
что до и после после. Интересно, что значения фрейма не то, что я задал, как в приведенном здесь коде, у меня есть x = 50, y = 300, w = 200, h = 60, а в описании NSLog - x = 190, y = 345, w = 110, h = 94, что находится вокруг позиции, которую я видел во время выполнения. Это значения, которые я установил в раскадровке.
2012[25830:12503] beyond button <UIRoundedRectButton: 0x8821cd0; frame = (190 345; 110 94); opaque = NO; autoresize = TM+BM; layer = <CALayer: 0x8821da0>>
Если я прокомментировал заданные строки кадра кода, когда я проверяю описание кнопки, до и после настроек кнопки, я получил 0,0,0,0 в качестве рамки кнопки --- хотя я вижу кнопки в нижней половине представления. Другим словом, строка установочного фрейма работает НЕКОТОРЫМ ПУТЕМ, но не так, как я хотел. Это просто значения раскадровки, но не те, которые я задал с помощью x, y, w, h.