#iphone #objective-c
#iPhone #objective-c
Вопрос:
На вкладке фотографии приложения iPhone fb для каждой ячейки табличного представления они помещают название альбома, за которым следует количество фотографий в альбоме.
Например,
ПЕРВЫЙ АЛЬБОМ (22)
ПОСЛЕДНИЙ И ЗАВЕРШАЮЩИЙ ВАРИАНТ … (12)
Я думаю, что есть две метки, одна для заголовка и одна для номера, потому что номер на самом деле другого UIColor. Как создать эффект, при котором число перемещается влево в зависимости от размера заголовка?(Примечание: я не могу использовать uiwebview, потому что это в uitableview)
Ответ №1:
sizeWithFont здесь ваш друг. Вы используете это следующим образом, чтобы получить желаемые результаты:
UILabel *label1 = [[UILabel alloc] initWithFrame:CGRectZero]; //for album titles
UILabel *label2 = [[UILabel alloc] initWithFrame:CGRectZero]; //for number of pics
/*
Set other label properties
such as background color,
font size, font color, etc
*/
NSString *string1 = [NSString stringWithFormat:@"This is a title"];
NSString *string2 = [NSString stringWithFormat:@"22"];
//Let's say both strings have a font size of 12.0f
CGSize string1Size = [string1 sizeWithFont:[UIFont systemFontOfSize:12.0f]];
label1.text = string1;
label2.text = string2;
label1.frame = CGRectMake(0/*or any origin x*/,0/*or any origin y*/,string1Size.width, string1Size.height];
label2.frame = CGRectMake(label1.frame.origin.x label1.frame.size.width 5/*or any other padding*/,label1.frame.origin.y, 40.0/*or some other fixed width*/,label1.frame.size.height);
Теперь просто добавьте их в качестве вложенных представлений, и все готово!
Комментарии:
1. Здесь полезен метод [NSString sizeWithFont:], как показано. Существуют другие варианты, которые позволяют получить размер в зависимости от любого ограничения, которое вы можете установить. Посмотрите этот метод в справочнике iOS; Это довольно полезно 🙂
Ответ №2:
Вы можете использовать sizeThatFits:
метод первой метки, чтобы получить размер метки, который поместился бы в доступном пространстве, а затем расположить вторую метку на основе результирующей ширины первой.
Или вы могли бы сделать примерно то же самое, используя различные дополнения NSString UIKit для измерения длины строки.
Или вы могли бы создать свой собственный пользовательский вид и самостоятельно рисовать текст в drawRect:
, хотя это не рекомендуется, когда существуют другие простые решения (пользовательские drawRect:
настройки замедляют работу UIKit).