是否可以编辑 UIAlertAction 标题字体大小和样式?
Posted
技术标签:
【中文标题】是否可以编辑 UIAlertAction 标题字体大小和样式?【英文标题】:Is it possible to edit UIAlertAction title font size and style? 【发布时间】:2014-09-23 06:48:39 【问题描述】:现在 ios8 已弃用 UIActionsheet
和 UIAlertview
,iOS7 上的自定义不再生效。到目前为止,我知道的唯一定制是色调。我需要的是更改标题的字体大小和样式,我还没有找到任何使用新的UIAlertAction
的方法。
Already referred to this 但我仍然希望有办法至少更改标题大小和字体。
为您提供我的一些UIAlertAction
的代码
UIAlertController * alertActionSheetController = [UIAlertController alertControllerWithTitle:@"Settings"
message:@""
preferredStyle:UIAlertControllerStyleActionSheet];
UIAlertAction * aboutTheAppAction = [UIAlertAction actionWithTitle:@"About the App"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction * action)
NSLog(@"About the app");
[self openAbout];
];
[alertActionSheetController addAction:aboutTheAppAction];
[self presentViewController:alertActionSheetController animated:YES completion:nil];
【问题讨论】:
看看这个github.com/ianb821/IBActionSheet 这对两者都适用,因为它由 uiview 的一个新子类组成,但我正在寻找的是编辑警报操作样式的方法。 【参考方案1】:您可以更改 UIAlertAction 的字体和颜色。 首先你需要添加 UILabel 类别
@interface UILabel (FontAppearance)
@property (nonatomic, copy) UIFont * appearanceFont UI_APPEARANCE_SELECTOR;
@end
@implementation UILabel (FontAppearance)
-(void)setAppearanceFont:(UIFont *)font
if (font)
[self setFont:font];
-(UIFont *)appearanceFont
return self.font;
@end
类别文件也上传到以下 URL https://www.dropbox.com/s/em91fh00fv3ut4h/Archive.zip?dl=0
导入该文件后,您需要调用以下函数。
UILabel * appearanceLabel = [UILabel appearanceWhenContainedIn:UIAlertController.class, nil];
[appearanceLabel setAppearanceFont:yourDesireFont]];
以上代码在颜色和字体上进行了测试。并且仅适用于 iOS8 或更高版本。
【讨论】:
这会改变 UIAlertController 视图中所有标签的字体。 感谢为我工作。我确实将它放入了我已经拥有的自己的 UILabel 类别中,并且属性声明进入了 .h 我将这些新选择器的方法声明放在了 .h 中,我在使用 UIAlertController 的地方导入了 .h 嘿谢谢你的解决方案只有一个查询...我们如何使用上述类别更改标题颜色。【参考方案2】:可以使用私有 API 更改警报操作的字体。它可能会让你的应用被拒绝,我还没有尝试提交这样的代码。
let alert = UIAlertController(title: nil, message: nil, preferredStyle: .ActionSheet)
let action = UIAlertAction(title: "Some title", style: .Default, handler: nil)let attributedText = NSMutableAttributedString(string: "Some title")
let range = NSRange(location: 0, length: attributedText.length)
attributedText.addAttribute(NSKernAttributeName, value: 1.5, range: range)
attributedText.addAttribute(NSFontAttributeName, value: UIFont(name: "ProximaNova-Semibold", size: 20.0)!, range: range)
alert.addAction(action)
presentViewController(alert, animated: true, completion: nil)
// this has to be set after presenting the alert, otherwise the internal property __representer is nil
guard let label = action.valueForKey("__representer")?.valueForKey("label") as? UILabel else return
label.attributedText = attributedText
【讨论】:
以上是关于是否可以编辑 UIAlertAction 标题字体大小和样式?的主要内容,如果未能解决你的问题,请参考以下文章