* изменить * положение UIbutton (Iphone SDK) - PullRequest
7 голосов
/ 24 февраля 2011

Я играю с кнопками UI, просто чтобы понять, что на самом деле можно с ними сделать.Пока у меня есть только одна проблема:

Как мне изменить позицию UIButton?

- (IBAction)buttonClicked:(id)sender
{
   UIButton *senderB = sender;

   CGPoint position = senderB.frame.origin;
   CGSize size = senderB.frame.size;
   senderB.frame = CGRectMake(position.x,position.y + 10,size.width,size.height);
}

Вышеописанное работает очень хорошо, однако создание новогоCGrect для каждого раза, когда я хочу просто изменить , мне кажется, что это довольно неэффективно.

Можно ли как-то напрямую установить значения senderB.frame.origin.x и т. Д.?

Ответы [ 3 ]

13 голосов
/ 24 февраля 2011

Я обычно делаю это так:

CGRect buttonFrame = button.frame;
buttonFrame.origin.y += 10;
button.frame = buttonFrame;
5 голосов
/ 24 февраля 2011

Неа.Обратите внимание, что someview.frame возвращает CGRect по значению, а не по ссылке или указателю или как-то еще.Вот почему вы получаете сообщение об ошибке «Lvalue required».

Тем не менее, установка фрейма так, как вы делаете, выполняется довольно быстро.

4 голосов
/ 24 февраля 2011

Свойство frame доступно только для чтения. Что вы можете сделать, это скопировать текущий кадр с

CGRect btFrame = senderB.frame; 
btFrame.origin.x += 10;
senderB.frame = btFrame;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...