我的表单有几个带自定义背景的按钮。我设法根据屏幕尺寸使用IB进行缩放。但是字体大小保持不变。是否可以使用IB(无编码)缩放字体大小?
如果不可能,可能有一种方法可以在代码中获取特定视图的所有子项,因此我可以编写一个标准(递归)函数来扩展字体,而无需显式列出所有文本视图。
答案 0 :(得分:1)
所以你提到了UIButtons和UITextViews。假设你的意思是调整按钮的titleLabels的大小,我就是这样做的。
- (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;
}
}
}
答案 1 :(得分:0)
谢谢你,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)
}
}
实际上我更喜欢你的方法......如果它有效。