UIB кнопка движется при нажатии - PullRequest
1 голос
/ 14 июля 2009

Я пытаюсь сделать UIB-кнопку, которая растет при нажатии. В настоящее время у меня есть следующий код в событии нажатия моей кнопки (любезно Тим ответ ):

#define button_grow_amount 1.2
CGRect currentFrame = button.frame;
CGRect newFrame = CGRectMake(currentFrame.origin.x - currentFrame.size.width / button_grow_amount,
                                 currentFrame.origin.y - currentFrame.size.height / button_grow_amount,
                                 currentFrame.size.width * button_grow_amount,
                                 currentFrame.size.height * button_grow_amount);
button.frame = newFrame;

Однако при запуске моя кнопка перемещается вверх и влево при каждом нажатии. Есть идеи?

Ответы [ 2 ]

4 голосов
/ 14 июля 2009

Вы можете использовать CGRectInset :

CGFloat dx = currentFrame.size.width * (button_grow_amount - 1);
CGFloat dy = currentFrame.size.height * (button_grow_amount - 1);
newFrame = CGRectInset(currentFrame, -dx, -dy);
1 голос
/ 14 июля 2009

Тебе нужны круглые скобки. Помните, что деление происходит до сложения / вычитания.

Кроме того, первые два параметра CGRectMake определяют, где на экране находится кнопка, а вторые два указывают размер. Поэтому, если вы просто хотите изменить размер кнопки, установите только последние два параметра.

#define button_grow_amount 1.2
CGRect currentFrame = button.frame;
CGRect newFrame = CGRectMake((currentFrame.origin.x - currentFrame.size.width) / button_grow_amount,
                             (currentFrame.origin.y - currentFrame.size.height) / button_grow_amount,
                             currentFrame.size.width * button_grow_amount,
                             currentFrame.size.height * button_grow_amount);

button.frame = newFrame;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...