使用UIButton(UIView)缩放文本字体

时间:2015-05-13 00:25:50

标签: ios uitextview font-size

我的表单有几个带自定义背景的按钮。我设法根据屏幕尺寸使用IB进行缩放。但是字体大小保持不变。是否可以使用IB(无编码)缩放字体大小?

如果不可能,可能有一种方法可以在代码中获取特定视图的所有子项,因此我可以编写一个标准(递归)函数来扩展字体,而无需显式列出所有文本视图。

2 个答案:

答案 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)
   }
}

实际上我更喜欢你的方法......如果它有效。