Масштабируемые кнопки в объективе-C - PullRequest
1 голос
/ 30 августа 2011

Мне было интересно, если это возможно, и как я мог бы сделать следующее,

Я хотел бы иметь UIButton, простую закругленную кнопку с одним цветом, но я хотел бы, чтобы ее ширина была масштабируемой на основе UILabel, который находится внутри нее.

Я нашел кое-что, что говорило о том, как можно использовать

UItextfield

и используйте свойства .leftView и .rightView, которые у него есть

Может ли кто-нибудь дать мне простой пример того, как я могу это сделать?

Спасибо!

Ответы [ 2 ]

2 голосов
/ 30 августа 2011

Вы можете найти размер строки NSSt в UILabel, выполнив что-то вроде этого:

CGSize size=[uibutton.titlelabel.text sizeWithFont:[UIFont fontWithName:@"Helvetica" size:fontSize] forWidth:uibutton.titlelabel.frame.size.width lineBreakMode:UILineBreakModeCharacterWrap];

Затем установите рамку uilabel и / или uibutton, используя эти свойства size.width и size.height.

Это всего лишь пример, вам нужно будет настроить свойства UIFont в соответствии с настройками или предпочтениями вашего ярлыка.

0 голосов
/ 30 августа 2011

Я предполагаю, что текст UILabel будет динамическим, поэтому вы не можете просто определить размеры и добавить их нормально?

попробуйте это:

-(void)setLabelText:(NSString*)string
{
   int length = string.length;

   myLabel.frame = CGRectMake(x, y, 5*length+5, height);
   buttonContainingLabel.frame = CGRectMake(x, y, 25+5*length, height);
}

Этот метод предполагает моноширинный шрифт, который вы, вероятно, не используете. Тем не менее, расхождения в ширине символов, вероятно, не составят какого-либо значимого различия в размерах, поскольку вы не пишете роман на кнопке. Я использую здесь значение 5 px в качестве ширины буквы, но вам придется изменить его, чтобы он соответствовал размеру вашего текста.

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