컨테이너 역할을하는 UIView가 있으며이 컨테이너의 너비는 가장 긴 String을 기반으로 동적으로 변경해야합니다. 그래서 문자열 길이에 따라 CGFloat/CGSize를 얻고 싶습니다. 그래도 가능합니까? 내가문자열 길이에 따라 CGFloat/CGSize를 얻는 방법은 무엇입니까?
0
A
답변
0
도움을 주셔서 감사합니다. @Venkat, 이것이 작동하는 해결책입니다. 에드 저
@objc func containerWidth() -> (CGFloat){
let containerSize = self.myLabel.intrinsicContentSize
containerWidth = containerSize.width
return containerWidth
}
0
당신은 폭이나 알려진 제공해야 문자열에 기초하고 싶은
myStringSize : CGSize = [longestString sizeWithFont:myFont
constrainedToSize:maximumSize
lineBreakMode:self.myLabel.lineBreakMode];
오히려 라벨을 내놓고보다
지금 감가 상각 가장 도움이 보인다 방법 ... 높이 :
extension String {
func getHeight(with width: CGFloat, font: UIFont) -> CGFloat {
let maxSize = CGSize(width: width, height: CGFloat.greatestFiniteMagnitude)
let actualSize = self.boundingRect(with: maxSize, options: [.usesLineFragmentOrigin], attributes: [NSFontAttributeName: font], context: nil)
return actualSize.height
}
func getWidth(with height: CGFloat, font: UIFont) -> CGFloat {
let maxSize = CGSize(width: CGFloat.greatestFiniteMagnitude, height: height)
let actualSize = self.boundingRect(with: maxSize, options: [.usesLineFragmentOrigin], attributes: [NSFontAttributeName: font], context: nil)
return actualSize.width
}
}
0
1 - 먼저 당신이 원하는 것을 최대 크기를 정의 MaxWidth
text
에 대한
CGSize constraint = CGSizeMake(MaxWidth, CGFLOAT_MAX);
2 속성 :
NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys: [UIFont systemFontOfSize:FONT_SIZE], NSFontAttributeName, nil];
3 *이 얻을하는 방법입니다 paraRect
text
에서 :
CGRect paraRect = [text boundingRectWithSize:constraint options:(NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading) attributes:attributes context:nil];
3- * 마지막으로 크기 가져 오기 :
을CGSize size = paraRect.size;
의 사용 가능한 복제 [텍스트 길이에 따라 UILabel의 폭을 계산하는 방법?] (https://stackoverflow.com/questions/3527494/how-to-calculate-uilabel-width-based-on -text-length) – Venkat
@Venkat 링크를 제공해 주셔서 감사합니다. 불행히도 7 년 전 이었으므로 방법이 현재 가치가 떨어지는 이유는 무엇입니까? ( – Maja
해당 링크의 모든 답변을 확인하십시오. 희망이 당신을 도울 것입니다. 'yourLabel.intrinsicContentSize.width'. 7 세 이전 대답은 또한 해결책을 줄 수 있습니다 ('boundingRect') : p – Venkat