我有一个视图,每行有4行3个按钮,所有按钮都具有相同的高度和宽度。我在设置iPhone的字体大小时遇到了麻烦。我使用的是尺寸等级"紧凑的宽度,常规高度"。如果我将字体大小设置为只适用于iPhone 4S或iPhone 5 ,那么它对于iPhone 6和6 plus来说太小了,反之亦然。我试图以编程方式完全覆盖字体,但似乎故事板中设置的值总是取代:
for button in self.mainMenuButtons {
button.layer.borderWidth = 4
button.layer.borderColor = UIColor(r: 156, g: 177, b: 215, alpha: 1).CGColor
button.layer.cornerRadius = 7
button.titleLabel?.textAlignment = .Center
button.setTitleColor(UIColor.redColor(), forState: .Highlighted)
if let type = phoneType {
switch type {
case .iPhone4:
break
case .iPhone5:
button.titleLabel?.font = UIFont.systemFontOfSize(1)
case .iPhone6:
break
case .iPhone6P:
break
}
} else { /* iPad */ }
}
这是一种经过验证的方法,用于识别用户拥有的设备。我在上面的代码中将字体设置为1只是为了测试,但肯定的是,字体大小不是1. mainMenuButtons
是所有按钮所在的插座集合。
答案 0 :(得分:0)
我可以根据您提供的信息更改按钮字体。你的代码中还必须有其他东西。也许是插座系列?如果没有正确连接到xib / storyboard,它可能会无声地失败。
尝试为此viewController的其中一个按钮创建一个新的插座。如果你可以用这个插座修改它,那么问题就是连接。如果您无法使用这个新创建的插座修改它,那么您还有另一个问题,即无法在SO上识别。
(要回答原来的评论,"故事板中设置的值似乎总是取代":情况并非如此。一旦xib在加载视图时从-initWithCoder:
脱离,除了约束之外,不会从故事板信息中修改这些值。这就是为什么-viewDidLoad
是修改已加载元素的地方的原因,此时已完成。)< / p>
不要忘记继续检查switch语句中的断点和/或日志,以确保其他内容不会导致代码无法运行。希望这可以帮助。