2011-08-30 2 views
1

мне было интересно, если его можно, и как я мог бы сделать следующее,масштабируемые кнопки в Objective-C

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

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

UItextfield

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

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

Спасибо!

ответ

2

Вы можете найти размер NSString в 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

Я предполагаю, что текст 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 здесь как ширину буквы, но вам придется изменить это, чтобы он соответствовал вашему размеру текста.

Смежные вопросы