【发布时间】:2015-07-24 01:55:11
【问题描述】:
我的表单有几个带有自定义背景的按钮。我设法使它们仅使用 IB 根据屏幕尺寸进行缩放。但是字体大小保持不变。是否可以使用 IB(无编码)缩放字体大小?
如果不可能,可能有一种方法可以在代码中获取特定视图的所有子视图,因此我可以编写一个标准(递归)函数来缩放字体,而无需明确列出所有文本视图。
【问题讨论】:
标签: ios uitextview font-size
我的表单有几个带有自定义背景的按钮。我设法使它们仅使用 IB 根据屏幕尺寸进行缩放。但是字体大小保持不变。是否可以使用 IB(无编码)缩放字体大小?
如果不可能,可能有一种方法可以在代码中获取特定视图的所有子视图,因此我可以编写一个标准(递归)函数来缩放字体,而无需明确列出所有文本视图。
【问题讨论】:
标签: ios uitextview font-size
所以你提到了 UIButtons 和 UITextViews。假设您的意思是调整按钮的标题标签的大小,我会这样做。
- (void)viewDidLoad {
[super viewDidLoad];
for (id subview in self.view.subviews) {
if ([subview isKindOfClass:[UIButton class]]) {
UIButton *button = (UIButton *)subview;
button.titleLabel.numberOfLines = 1;
button.titleLabel.adjustsFontSizeToFitWidth = YES;
button.titleLabel.lineBreakMode = NSLineBreakByClipping;
}
}
}
这是 Swift 中的一个镜头
override func viewDidLoad() {
super.viewDidLoad()
for subview in self.view.subviews {
if let button = subview as? UIButton {
button.titleLabel!.numberOfLines = 1;
button.titleLabel!.adjustsFontSizeToFitWidth = true;
button.titleLabel!.lineBreakMode = .ByClipping;
}
}
}
【讨论】:
numberOfLines。你也应该新设置minimumScaleFactor。
谢谢你,Dare,但不幸的是这不起作用
我找不到比手动设置字体大小更好的方法了。 因为我所有的按钮都有相同的字体大小,所以我这样做:
// This constant is found empirically
let rootView = self.view;
let fontSize = CGFloat(rootView.frame.size.width) / 32;
for subview in rootView.subviews {
if let button = subview as? UIButton {
let btnLabel = button.titleLabel!
btnLabel.textAlignment = NSTextAlignment.Center
btnLabel.font = btnLabel.font.fontWithSize(fontSize)
}
}
其实我更喜欢你的方法……如果有效的话。
【讨论】: