sizetofit swift что делает
Метод Label.SizeToFit (Access)
Вы можете использовать метод SizeToFit для размера управления, чтобы он подходя к тексту или изображению, который в нем содержится.
Синтаксис
выражения. SizeToFit
выражение Переменная, представляюная объект Label.
Примечания
Например, метод SizeToFit можно применить к кнопке команды, которая слишком мала, чтобы отобразить весь текст в свойстве caption.
Метод SizeToFit можно использовать для управления только в виде представления «Дизайн» или «Представление разработки отчета».
Метод SizeToFit делает управление больше или меньше в зависимости от размера текста или изображения, которое он содержит.
Вы можете использовать метод SizeToFit совместно с методом CreateControl для создания новых элементов управления, созданных в коде.
Не все элементы управления, содержащие текст или изображение, могут быть размером с помощью метода SizeToFit. Несколько элементов управления привязаны к данным, которые могут отличаться по размеру от одной записи к другой. Эти элементы управления включают текстовое поле, поле списка, комбо-поле и элементы управления кадрами связанных объектов. Метод SizeToFit не применяется к средствам управления на страницах доступа к данным.
Пример
В следующем примере создается новая форма и кнопка команды на форме. Затем процедура задает свойство caption и размер управления, чтобы соответствовать подписи.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
UILabel sizeToFit and constraints
Is there any simple way which can help me to change position of dependent views dynamically using their content size?
I want to show several views in column which all have varying content. And I want them to be placed one after another (I’ve created layout using constraints which looks like this)
At the moment I’m interested only in height property, I know that constraining rect can be used too and in the past I wrote many categories on UIView to change sizes dynamically (I guess everyone did). But maybe there is a simple way which I don’t know?
3 Answers 3
-sizeToFit should not be called if you are using auto-layout. That’s part of the ‘old’ system.
It looks like IB has inserted explicit heights into your constraints (the vertical bars next to the labels indicate this). Try selecting the labels and hitting Cmd+= to clear these.
For multiline labels you will also need to do the following in your view controller to make everything work correctly when rotating/resizing the view:
Multiline labels expose one of the weaknesses of auto-layout. We have to update preferredMaxLayoutWidth to force the label to reflow and adjust its height, otherwise if the view is resized/rotated, auto-layout does not realize the label needs to be reflowed and resized.
How do I sizeToFit a UILabel by changing only the height and not the width?
Result before sizeToFit:
Result After sizeToFit:
I want the width to remain the same. I just want to change the height. THe automask is
The answers are either strange (we need to resupply the font information). Or unclear.
You will also need to define a maximum width, and tell your program what to do if sizeToFit gives you a width greater than that maximum.
Actually how does sizeToFit behave anyway? How does it decide whether we need thinner or taller UILabel?
10 Answers 10
You can achieve the same result with sizeThatFits.
Or alternatively, with sizeToFit.
This is how it is done. Because the label already contains the font information, including it in this method call is trivial.
Swift version using the more up-to-date boundingRectWithSize :
sizeToFit works great. The only problem is that it is based on the current size of the control.
For instance if you are recycling table view cells with a label, the label may have been reduced in width in a previous cell and so, the call to sizeToFit may look unreliable.
Just reset the original width of your control before you send the sizeToFit message.
An easy extension for this problem for Swift 3.
I think you should not use NSString ‘s size. methods, UILabel already has an API for just that, as @vatrif points out (which internally probably uses just NSString ‘s methods).
Nevertheless I think UILabel ‘s API could be improved. Thats why I think a category would be the most elegant solution:
Just one thing: I am not sure about the appropriate name for that method:
Comments very much appreciated, thanks!
Agreed API would benefit from this addition. Make your life easier and add an extension to the UILabel class in Swift as follows:
Answer for 2017.
c = CGSize(width: yourWidth, height: CGFloat.greatestFiniteMagnitude)
result = sizeThatFits(c).height
Very often, you want to know the difference in height compared to a «normal» one-line entry.
This comes up in particular if you are making some sort of cells that have nothing to do with UTableView (say, some sort of custom stack view). You have to set the height manually at some point. On your storyboard, build it as you wish, using a sample text of any short string (eg, «A») which of course will have only one line in any normal situation. Then you do something like this.
Final point: one of the really stupid things in iOS is that UITextView has a bizarre sort of margin inside it. This means you can’t just swap between UITextViews and labels; and it causes many other problems. Apple haven’t fixed this issue as of writing. To fix the problem is difficult: the following approach is usually OK:
Broken, unusable UITextView from Apple.
UITextViewFixed which is, in most cases, an acceptable fix:
Метод TextBox.SizeToFit (Доступ)
Вы можете использовать метод SizeToFit для размера управления, чтобы он подходя к тексту или изображению, который в нем содержится.
Синтаксис
выражения. SizeToFit
выражение Переменная, представляющие объект TextBox.
Заметки
Например, метод SizeToFit можно применить к кнопке команды, которая слишком мала, чтобы отобразить весь текст в свойстве caption.
Метод SizeToFit можно использовать для управления только в виде представления «Дизайн» или «Представление разработки отчета».
Метод SizeToFit делает управление больше или меньше в зависимости от размера текста или изображения, которое он содержит.
Вы можете использовать метод SizeToFit совместно с методом CreateControl для создания новых элементов управления, созданных в коде.
Не все элементы управления, содержащие текст или изображение, могут быть размером с помощью метода SizeToFit. Несколько элементов управления привязаны к данным, которые могут отличаться по размеру от одной записи к другой. Эти элементы управления включают текстовое поле, поле списка, комбо-поле и элементы управления кадрами связанных объектов. Метод SizeToFit не применяется к средствам управления на страницах доступа к данным.
Пример
В следующем примере создается новая форма и кнопка команды на форме. Затем процедура задает свойство caption и размер управления, чтобы соответствовать подписи.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.
Метод OptionGroup.SizeToFit (Доступ)
Вы можете использовать метод SizeToFit для размера управления, чтобы он подходя к тексту или изображению, который в нем содержится.
Синтаксис
выражения. SizeToFit
выражение Переменная, представляюная объект OptionGroup.
Примечания
Например, метод SizeToFit можно применить к кнопке команды, которая слишком мала, чтобы отобразить весь текст в свойстве caption.
Метод SizeToFit можно использовать для управления только в виде представления «Дизайн» или «Представление разработки отчета».
Метод SizeToFit делает управление больше или меньше в зависимости от размера текста или изображения, которое он содержит.
Вы можете использовать метод SizeToFit совместно с методом CreateControl для создания новых элементов управления, созданных в коде.
Не все элементы управления, содержащие текст или изображение, могут быть размером с помощью метода SizeToFit. Несколько элементов управления привязаны к данным, которые могут отличаться по размеру от одной записи к другой. Эти элементы управления включают текстовое поле, поле списка, комбо-поле и элементы управления кадрами связанных объектов. Метод SizeToFit не применяется к средствам управления на страницах доступа к данным.
Пример
В следующем примере создается новая форма и кнопка команды на форме. Затем процедура задает свойство caption и размер управления, чтобы соответствовать подписи.
Поддержка и обратная связь
Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.