【问题标题】:Making a text font to scale with UIButton (UIView)使用 UIButton (UIView) 制作可缩放的文本字体
【发布时间】:2015-07-24 01:55:11
【问题描述】:

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

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

【问题讨论】:

    标签: ios uitextview font-size


    【解决方案1】:

    所以你提到了 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;
            }
        }
    }
    

    【讨论】:

    • 您不再需要在 iOS 6+ 中指定 numberOfLines。你也应该新设置minimumScaleFactor
    【解决方案2】:

    谢谢你,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)
       }
    }
    

    其实我更喜欢你的方法……如果有效的话。

    【讨论】:

      猜你喜欢
      • 2018-03-11
      • 1970-01-01
      • 2020-12-06
      • 2016-01-17
      • 2020-05-14
      • 2012-04-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多