我正在尝试创建一个自定义的 UIAlertController 样式为 UIAlertControllerStyleActionSheet (以前称为 UIActionSheet),但我在简单地自定义它时遇到了很多麻烦。我希望我的 UIAlertAction 在左侧包含图像 和 减小按钮大小 。
我知道这是可行的:
(这正是我正在寻找的)
我搜索了几个小时,但在互联网上找不到任何可以帮助我完成这项简单任务的信息。另外,由于 UIActionSheet 自 IOS 9 起已被弃用,因此每当我尝试寻找解决方案时,它都不再可用。另外,我读到 UIAlertController 不打算被子类化......
有谁知道如何实现我的警报的轻量级定制?
我是否必须对 UIView 进行 sublass 才能制作我自己的警报表?
最佳答案
此解决方案确实使用私有(private) API/属性。根据我的研究和经验,这是我知道您可以自定义 UIAlertController 的唯一方法。如果您查看公共(public)标题,UIAlertContoller 几乎没有自定义空间。但是,在 iOS 8 中推出 UIAlertController 之后,该解决方案在开发人员中普遍使用。您完全可以依赖 Github 的依赖项。希望我的回答能解决你的问题。
我相信这就是你要找的,结果看起来像这样:
首先,您必须创建一个 UIAlertController
UIAlertController *alertVC = [UIAlertController alertControllerWithTitle:@"Alert Title" message:@"" preferredStyle:UIAlertControllerStyleActionSheet];
自定义字体!即使只是某些字符。
NSMutableAttributedString *hogan = [[NSMutableAttributedString alloc] initWithString:@"Presenting the great... StackOverFlow!"];
[hogan addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:30.0] range:NSMakeRange(24, 11)];
[alertVC setValue:hogan forKey:@"attributedTitle"];
现在,让我们创建一个 UIAlertAction,您可以在其中添加 Action 处理程序并添加图标。
UIAlertAction *button = [UIAlertAction actionWithTitle:@"First Button"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action){
//add code to make something happen once tapped
}];
UIAlertAction *button2 = [UIAlertAction actionWithTitle:@"Second Button"
style:UIAlertActionStyleDefault
handler:^(UIAlertAction *action){
//add code to make something happen once tapped
}];
在这里,您将图标添加到 AlertAction。对我来说,你必须指定
UIImageRenderingModeAlwaysOriginal
[button setValue:[[UIImage imageNamed:@"image.png"] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal] forKey:@"image"];
[alertVC addAction:button2];
[alertVC addAction:button];
记得展示 ViewController
[self presentViewController:alertVC animated:YES completion:nil];