Автоматическое изменение размера UILabel на основе текста, который будет отображаться

Я работаю над приложением, в котором мне необходимо авторизовать текстовую область на основе текста для отображения.

Во-первых, я не уверен, что я должен использовать UILabel (логически – лучший выбор для отображения статического текста, который в моем случае) или UITextView .

Как я могу это использовать?
Я хочу просто создать свой текст или текстовое представление в этом отношении с помощью Text. Вместо этого я сначала определяю кадр, а затем ограничиваю свой текст в этой области.

Если вы можете предложить правильное решение, это будет большой помощью.

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

10 Solutions collect form web for “Автоматическое изменение размера UILabel на основе текста, который будет отображаться”

Метод sizeToFit работал отлично.

Я сделал следующее.

 UILabel *testLabel =[[UILabel alloc] initWithFrame:CGRectMake(6,3, 262,20 )]; // RectMake(xPos,yPos,Max Width I want, is just a container value); NSString * test=@"this is test this is test inthis is test ininthis is test inthis is test inthis is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ...this is test in uilabel ..."; testLabel.text = test; testLabel.numberOfLines = 0; //will wrap text in new line [testLabel sizeToFit]; [self.view addSubview:testLabel]; 

Размер текста можно найти с помощью:

 CGSize textSize = [[myObject getALongText] sizeWithFont:[UIFont boldSystemFontOfSize:15] constrainedToSize:CGSizeMake(maxWidth, 2000) lineBreakMode:UILineBreakModeWordWrap]; 

то вы можете создать свой UILabel следующим образом:

 UILabel * lbl = [[UILabel alloc] initWithFrame:CGRectMake(0,0,textSize.width, textSize.height]; [lbl setNumberOfLines:0]; [lbl setLineBreakMode:UILineBreakModeWordWrap]; [lbl setText:[myObject getALongText]]; 

В Свифт:

 testLabel = UILabel(frame: CGRectMake(6, 3, 262, 20)) testLabel.text = test testLabel.numberOfLines = 0 testLabel.sizeToFit() 

В Цель C

 UILabel *testLabel = [[UILabel alloc] initWithFrame: CGRectMake(6, 3, 262, 20)]]; testLabel.text = test; testLabel.numberOfLines = 0; [testLabel sizeToFit]; 

Если вы хотите изменить размер UILabel только по высоте, используйте это:

 @property (nonatomic, weak) IBOutlet UILabel *titleLabel; CGRect titleLabelBounds = self.titleLabel.bounds; titleLabelBounds.size.height = CGFLOAT_MAX; // Change limitedToNumberOfLines to your preferred limit (0 for no limit) CGRect minimumTextRect = [self.titleLabel textRectForBounds:titleLabelBounds limitedToNumberOfLines:2]; CGFloat titleLabelHeightDelta = minimumTextRect.size.height - self.titleLabel.frame.size.height; CGRect titleFrame = self.titleLabel.frame; titleFrame.size.height += titleLabelHeightDelta; self.titleLabel.frame = titleFrame; 

Теперь вы можете использовать titleLabelHeightDelta для компоновки других представлений в зависимости от размера вашей метки (без использования автозапуска).

Я не уверен, что полностью понимаю этот вопрос, но вы можете использовать метод sizeToFit для UILabel (метод унаследован от UIView ), чтобы изменить размер в соответствии с текстом метки.

Самый простой способ найти нет. строк в зависимости от текста. Вы можете использовать этот код:

 ceil(([aText sizeWithFont:aFont].width)/self.bounds.size.width-300); 

он возвращает некоторое значение float.

 [lbl setNumberOfLines:floatvalue]; 

Обратите внимание, что при автозапуске размер вызоваToFit не изменит размер, так как он будет изменен позже с помощью вычислений автоопределения. В этом случае вам нужно установить правильное ограничение высоты для вашего UILabel с «height> = xx».

Поскольку вы собираетесь использовать это решение бесчисленное количество раз в своем приложении, выполните следующие действия:

1) Создайте каталог с extensions и добавьте новый файл внутри UILabel.swift со следующим кодом:

 import UIKit extension UILabel { func resizeToText() { self.numberOfLines = 0 self.sizeToFit() } } 

2) В вашем коде приложения определите ширину метки, которую вы хотите, и просто вызовите resizeToText() :

 label.frame.size.width = labelWidth label.resizeToText() 

Это будет поддерживать ширину при одновременном увеличении высоты.

попробуйте bellow code, он работает для многострочных

 self.labelText.text = string; self.labelText.lineBreakMode = NSLineBreakByWordWrapping; self.labelText.numberOfLines = 0; 

Вы можете изменить размер метки по длине строки, используя эту функцию

 func ChangeSizeOfLabel(text:String) -> CGSize{ let font = UIFont(name: "HelveticaNeue", size: 12)! let textAttributes = [NSFontAttributeName: font] let size = text.boundingRectWithSize(CGSizeMake(310, 999), options: .UsesLineFragmentOrigin, attributes: textAttributes, context: nil) let adjustSize = CGSizeMake(size.width, size.height) return adjustSize } 

и используйте его так:

позволять

 showLabel.frame = CGRectMake(x, y, width , self.ChangeSizeOfLabel("Hello , Height is changing dynamically.....").height) 
  • Интерполирование UITextFields с помощью UITextView с использованием текстового набора?
  • Как ограничить символы в UITextView iOS
  • Возможно ли анимация изображения NSTextAttachment?
  • UITextView: намного лучшая производительность после второй прокрутки
  • Динамическое расширение UITextView
  • Как настроить UITextview как текстовое поле Rounded Rect?
  • Редактирование содержимого HTML в приложении iOS
  • Поиск последней строки текста из UILable / UITextView
  • Создание UITextView, недоступное для редактирования пользователем
  • Изменить цвет ссылок UITextView с фильтром?
  • Бесконечное текстовое изображение с автопрокруткой в ​​ios
  • Interesting Posts

    Удалить файл из пакета после установки

    инструменты fastlane и xcode8, должен ли я использовать его?

    Найти определенный профиль обеспечения в Xcode 8.3.1

    Подклассы против протоколов

    Когда я запускаю приложение для iPhone на iPad, разрешение экрана неверно. Как это исправить?

    При проектировании корзины покупок в iOS следует использовать основные данные или глобальный класс Cart?

    Не удалось проверить биткод (непризнанные аргументы: -disable-llvm-pass)

    Как загрузить и распаковать файлы на iOS

    NSMutableArray addObject сбой в устройстве, но работает в симуляторе в порядке

    iOS Safari для выбора нескольких вариантов визуально для одного выбора

    Как сделать переключатель с быстрым?

    Обнаруживать, загружается ли приложение iOS из Testflight от Apple

    SpriteKit: запустить действие, когда сцена приостановлена

    что является единственным наиболее полезным ресурсом для изучения развития iPhone

    Swift не импортирует typedef из заголовка Objective-C

    PhoneC: Разработка iOS проста с помощью XCode, Swift3, UITableView, cocatouch, давайте создадим приложения для iPhone, iPad и Macbook.