在 UisegmentControl 中调整字体大小
Adjust font size in UisegmentControl
我如何在 segmentcontrol 中调整字体大小,就像它有一个 属性 名为 adjustsFontSizeToFitWidth 的标签一样,所以如果文本大于标签宽度,字体大小将变小以适应宽度我怎么能做同样的事情对于 uisegmetncontrol?
使用 setTitleTextAttrribute 设置段控制的字体
SegmentControl.setTitleTextAttributes([NSFontAttributeName: UIFont(name: REGULAR_FONT, size: 13.0)],
for: UIControlState())
SegmentControl.setTitleTextAttributes([NSFontAttributeName: UIFont(name: BOLD_FONT, size: 13.0)], for:.selected)
添加了评论中提到的 swift 版本的答案:-
func setWidthTosegmetControl(view :UIView) {
let subviews = view.subviews
for subview in subviews {
if subview is UILabel {
let label: UILabel? = (subview as? UILabel)
print("label found: \(label?.text)")
label?.adjustsFontSizeToFitWidth = true
label?.minimumScaleFactor = 0.1
}else {
setWidthTosegmetControl(view: subview)
}
}
}
我必须在视图控制器中完成它并在 viewDidAppear 中调用函数。
func autoshrinkSegmentFontSize() {
for subview in segments.subviews {
for label in subview.subviews {
if let myLabel = subview as? UILabel {
myLabel.adjustsFontSizeToFitWidth = true
myLabel.minimumScaleFactor = 0.5
}
}
}
}
我如何在 segmentcontrol 中调整字体大小,就像它有一个 属性 名为 adjustsFontSizeToFitWidth 的标签一样,所以如果文本大于标签宽度,字体大小将变小以适应宽度我怎么能做同样的事情对于 uisegmetncontrol?
使用 setTitleTextAttrribute 设置段控制的字体
SegmentControl.setTitleTextAttributes([NSFontAttributeName: UIFont(name: REGULAR_FONT, size: 13.0)],
for: UIControlState())
SegmentControl.setTitleTextAttributes([NSFontAttributeName: UIFont(name: BOLD_FONT, size: 13.0)], for:.selected)
添加了评论中提到的 swift 版本的答案:-
func setWidthTosegmetControl(view :UIView) {
let subviews = view.subviews
for subview in subviews {
if subview is UILabel {
let label: UILabel? = (subview as? UILabel)
print("label found: \(label?.text)")
label?.adjustsFontSizeToFitWidth = true
label?.minimumScaleFactor = 0.1
}else {
setWidthTosegmetControl(view: subview)
}
}
}
我必须在视图控制器中完成它并在 viewDidAppear 中调用函数。
func autoshrinkSegmentFontSize() {
for subview in segments.subviews {
for label in subview.subviews {
if let myLabel = subview as? UILabel {
myLabel.adjustsFontSizeToFitWidth = true
myLabel.minimumScaleFactor = 0.5
}
}
}
}