UILabel 옆에 이미지를 표시하고 싶지만 UILabel에는 가변 텍스트 길이가 있으므로 이미지를 배치 할 위치를 모릅니다. 어떻게하면됩니까?
답변
CGSize expectedLabelSize = [yourString sizeWithFont:yourLabel.font
constrainedToSize:maximumLabelSize
lineBreakMode:yourLabel.lineBreakMode];
-[NSString sizeWithFont : forWidth : lineBreakMode :]는 무엇입니까?
이 질문에 답이있을 수도 있습니다.
2014 년에는 아래 Norbert의 매우 유용한 의견을 바탕으로이 새 버전으로 편집했습니다! 이것은 모든 것을한다. 건배
// yourLabel is your UILabel.
float widthIs =
[self.yourLabel.text
boundingRectWithSize:self.yourLabel.frame.size
options:NSStringDrawingUsesLineFragmentOrigin
attributes:@{ NSFontAttributeName:self.yourLabel.font }
context:nil]
.size.width;
NSLog(@"the width of yourLabel is %f", widthIs);
답변
yourLabel.intrinsicContentSize.width
위한 오브젝티브 C / 스위프트
답변
신속하게
yourLabel.intrinsicContentSize().width
답변
선택한 답변은 iOS 6 이하에서 정확합니다.
아이폰 OS 7 년 sizeWithFont:constrainedToSize:lineBreakMode:
되었습니다 되지 않습니다 . 이제 사용하는 것이 좋습니다 boundingRectWithSize:options:attributes:context:
.
CGRect expectedLabelSize = [yourString boundingRectWithSize:sizeOfRect
options:<NSStringDrawingOptions>
attributes:@{
NSFontAttributeName: yourString.font
AnyOtherAttributes: valuesForAttributes
}
context:(NSStringDrawingContext *)];
반환 값은 a가 CGRect
아닙니다 CGSize
. 잘만되면 그것은 iOS 7에서 그것을 사용하는 사람들에게 도움이 될 것입니다.
답변
iOS8에서 sizeWithFont는 더 이상 사용되지 않습니다.
CGSize yourLabelSize = [yourLabel.text sizeWithAttributes:@{NSFontAttributeName : [UIFont fontWithName:yourLabel.font size:yourLabel.fontSize]}];
sizeWithAttributes에 원하는 모든 속성을 추가 할 수 있습니다. 설정할 수있는 다른 속성 :
- NSForegroundColorAttributeName
- NSParagraphStyleAttributeName
- NSBackgroundColorAttributeName
- NSShadowAttributeName
등등. 그러나 아마도 당신은 다른 사람들이 필요하지 않을 것입니다
답변
Swift 4 제약 조건을 사용하는 사람에게 답변
label.text = "Hello World"
var rect: CGRect = label.frame //get frame of label
rect.size = (label.text?.size(attributes: [NSFontAttributeName: UIFont(name: label.font.fontName , size: label.font.pointSize)!]))! //Calculate as per label font
labelWidth.constant = rect.width // set width to Constraint outlet
Swift 5 제약 조건을 사용하는 사람에게 답변
label.text = "Hello World"
var rect: CGRect = label.frame //get frame of label
rect.size = (label.text?.size(withAttributes: [NSAttributedString.Key.font: UIFont(name: label.font.fontName , size: label.font.pointSize)!]))! //Calculate as per label font
labelWidth.constant = rect.width // set width to Constraint outlet
답변
CGRect rect = label.frame;
rect.size = [label.text sizeWithAttributes:@{NSFontAttributeName : [UIFont fontWithName:label.font.fontName size:label.font.pointSize]}];
label.frame = rect;