I am having label in my Smartface project for description field.
Is there any way to set the height of the label to auto or setting height basing on the text length.
Thanks in advance.
There is a property for that.
Check the attached picture below :
If you make the label's autosize property true, then it's width property changes automatically in order to show the text.
If this is not enough for your text, you can also use multiline property. This makes your label's height property change.
If you don't want to change label's size, then you can use "Adjust font size to fit". If you set an appropriate value for min font size, then your text font gets smaller in order to fit into the label.
Related
There's a RectComponent, and a TextComponent inside. The text will change length sometimes.
So I need "text adaptation".
The fontsize :
The size of glyphs (in logical pixels) to use when painting the text.
I cannot find the conversion method between fontSize(logical pixels) and component size.
Is there some formula between "component size" and "font size"?
There is currently no way to automatically fit the text in the size of the RectangleComponent.
You can however use TextComponent.textRenderer.measureWidth and calculate whether the font size has to be smaller or larger than it currently is.
Remember that if you don't use a mono-spaced font, a string with the same amount of characters as another string might become different widths.
You can use FittedBox, check this answer out:
How to dynamically resize text in Flutter?
So, basically, FittedBox makes sure the content always stays within an area.
The font size of text in a UITextView is dynamic, how can I determine the current height of a row (i.e. sizeWithFont.height + line spacing height)?
You might try:
textView.font.lineHeight
Content size of the UITextView gives the height of the text in textView.
With the frame property you can access properties like height or width.
myTextView.frame.size.heigth;
If you get silly values, use bounds instead of frame.
How can I add an indent or offset to text inside a UILabel? It needs to be a specific pixel size, independent of the font size.
you could create another UILabel and then set each label's frames to be a certain width apart, that way it could be done dynamically rather easily if thats what you are trying to accomplish.
I have an NSString and want to fit it into a rectangle. The rectangle has a specified size, lets say width=150 and height=30. When the String is short and has only one character, it can be as high as the rectangle. More specific: It can have a big font size. But if the string has too much characters and would exceed the bounds of the rectangle, it must become smaller. More specific: It's font size must become smaller, so that it won't exceed the bounds of the rectangle. Is there a way of doing that without messing around in core graphics?
For some reason, UILabel's adjustsFontSizeToFitWidth Property has no effect. The text keeps beeing small even if there is plently of space.
I've set that to
label.adjustsFontSizeToFitWidth = YES;
but nothing happens. I hope there is another way to do that...
There are several part to UILabel that make this possible, but first you have to know if you want to truncate the string or make the font size smaller to fit in the rectangle.
For both cases you'll want to set the UILabel's numberOfLines property to 0, allowing the label to wrap as much as necessary. Then you'll want to set the frame of the UILabel to match the rectangle you're looking to fit. From there you take one of two paths:
Truncation: Set the lineBreakMode property to UILineBreakModeClip, UILineBreakModeHeadTruncation, UILineBreakModeTailTruncation, or UILineBreakModeMiddleTruncation depending on the truncation behavior you're looking for.
Resizing: Set the lineBreakMode to either UILineBreakModeWordWrap or `UILineBreakModeCharacterWrap' depending on your preference. Then you'll need to enter a loop to figure out the right font size. Start with a reasonable font size (e.g., 12) and:
Set the font property of the UILabel with a UIFont that matches that size
Call - (void) sizeToFit for the UILabel.
Check the frame for the UILabel:
If the frame will fit within the bounds you need it to, you're done
If the frame is still to big, drop the size of the font and repeat the loop
For the latter option you'll want to make sure you're not squeezing the text into oblivion, so you'll want to put a minimum size cap on the font size.
You can get more information from the UILabel and UIFont documentation.
adjustsFontSizeToFitWidth adjusts the font size down, not up.
Set the font on your UILabel to an appropriately large size, and UILabel will shrink it when necessary to fit in its bounds.
Set label font size to desired normal size.
Set label minimum font size to
smallest possible font
(minimumFontSize property)
Set adjustsFontSizeToFitWidth to
YES.
If you need multiple lines, set lineCount to 0 as the other poster noted.
I have initialized a text box to have font size 16. Now I have noticed that as I type beyond the boundary of the text box, iPhone decreases the font size and then scrolls. Now If I delete everything from the text box and start typing, it starts with the small font and never becomes 16. Could you let me know how can I fix this? Can I initialize the font size at some method every time somebody starts typing?
Thanks.
In Interface Builder, if you select the text field, you can deselect the 'Adjust to Fit' checkbox in the TextField Attributes. The font should remain the same as you set it and will show an elipsis (50...) if the content exceeds the space available.
I think you have it setup so that text field adjust font size to fit the text inside.
Try not setting it or reset to what you require.
UITextField reference:
adjustsFontSizeToFitWidth
A Boolean
value indicating whether the font size
should be reduced in order to fit the
text string into the text field’s
bounding rectangle.
#property(nonatomic) BOOL adjustsFontSizeToFitWidth
Discussion
Normally, the text field’s content is
drawn with the font you specify in the
font property. If this property is set
to YES, however, and the contents in
the text property exceed the text
field’s bounding rectangle, the
receiver starts reducing the font size
until the string fits or the minimum
font size is reached. The text is
shrunk along the baseline.
The default value for this property is
NO. If you change it to YES, you
should also set an appropriate minimum
font size by modifying the
minimumFontSize property.