UIButton будет изменен - PullRequest
       17

UIButton будет изменен

0 голосов
/ 11 ноября 2009

Я использую UIButton в своем приложении. Название этой кнопки отображается динамически в соответствии с выбором пользователя. Теперь мне нужно изменить ширину кнопки в соответствии с содержанием заголовка. Я вычисляю длину строки и назначаю ее ширине кнопки.

кнопка изменена в соответствии с названием, но проблема заключается в следующем, 1. Если сначала отображается заголовок с большим содержимым, а после этого, если отображается заголовок с небольшим содержимым, это означает, что кнопка перезаписывается, но не удаляет ранее созданное значение. 2. похоже, что одна кнопка наложена на другую.

Ответы [ 2 ]

2 голосов
/ 11 ноября 2009

Предположим, у вас есть кнопка атрибута в вашем классе

-(void)changeTitleButtonWithValue:(NSString *)value
{
//get the value length (- (CGSize)sizeWithFont:(UIFont *)font)
size = [value sizeWithFont:yourFont];
self.button.frame = CGRectMake(x, y, size.width,size.height);
[self.button setTitle:value forState:UIControlStateNormal];
[self.button setTitle:value forState:UIControlStateHighlighted];

}

Редактировать: у вас есть много способов получить вашу кнопку

  • Вы создаете его из Interface Builder
    • Добавить в качестве розетки
    • Установите тег и получите его с помощью UIButton * myButton = (UIButton *) [self.view viewForTag: YOURTAG];
  • Вы создаете это из кода
    • Атрибут экземпляра
    • То же самое с тегом, но при его создании: myButton.tag = YOURTAG;
0 голосов
/ 11 ноября 2009

Мне кажется, вы не меняете ширину кнопки, а добавляете другую кнопку. Вы добавляете кнопки в коде? Если вы это сделаете, не могли бы вы опубликовать код?

В общем случае, если вы хотите добавить еще одну кнопку, лучше добавить ей тег и удалить представление с этим тегом (т. Е. Старую кнопку) из суперпредставления перед добавлением новой.

Это должно выглядеть примерно так (с макушки головы):

UIButton * button = [[[UIButton alloc] init] autorelease];
button.tag = 100;
/* ...set up the button the way you would normally do... */

// remove old button
[[targetView viewWithTag: 100] removeFromSuperview];

// add new button
[targetView addSubview: button];

Тег - это произвольное целое число, используемое для идентификации представления. Было бы лучше #define использовать ваши теги в центральном месте.

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