相信很多程序员都会遇到需求是这样的:

但是你发现无论怎么设置cancel和Destructive都无法让红色字体移动到下面取消按钮上:

其实之前一直用错,用了ios9之前的UIActionSheet这个view来当控件,但是发现,UIAlertController这个控制器用来做这个更好,只需一行代码就可以搞定。以下是我自己通过利用kvc去对字体颜色做改变的做法,希望有其他见解的可以随时交流。

- (void)viewDidLoad {

[super viewDidLoad];

self.button    = [[UIButton alloc]initWithFrame:CGRectMake(100, 200, 100, 50)];

_button.backgroundColor  = [UIColor blueColor];

[_button setTitle:@"性别" forState:UIControlStateNormal];

[_button addTarget:self action:@selector(selectSheet) forControlEvents:UIControlEventTouchUpInside];

[self.view addSubview:_button];

}

- (void)selectSheet

{

UIAlertAction *alertAct = [UIAlertAction actionWithTitle:@"男" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

[_button setTitle:@"男" forState:UIControlStateNormal];

}];

UIAlertAction *alertAct1 = [UIAlertAction actionWithTitle:@"女" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

[_button setTitle:@"女" forState:UIControlStateNormal];

}];

UIAlertAction *alertAct2 = [UIAlertAction actionWithTitle:@"保密" style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {

[_button setTitle:@"保密" forState:UIControlStateNormal];

}];

UIAlertAction *alertAct3 = [UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:^(UIAlertAction * _Nonnull action) {

}];

//******通过利用kvc对字体颜色进行修改 *******//

[alertAct3 setValue:[UIColor redColor] forKey:@"_titleTextColor"];

UIAlertController *alertControl = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleActionSheet];

[alertControl addAction:alertAct];

[alertControl addAction:alertAct1];

[alertControl addAction:alertAct2];

[alertControl addAction:alertAct3];

[self presentViewController:alertControl animated:YES completion:nil];

}

关于UIAlertAction如何修改sheet上的字体颜色的更多相关文章

  1. 修改TabBarViewController上标题字体颜色

    UINavigationController *newNavVc = [[UINavigationController alloc]init]; newNavVc.title = title; new ...

  2. runtime查找 UIAlertAction 的key 及 UIActionSheet 设置字体颜色

    修改不了颜色了 结果发现kvo 的key 不对 哎 直接上代码 设置正确的属性找到对应的key  还以为iOS 11改变了方法 unsigned int count; Ivar *ivars =  c ...

  3. WPS修改批注部分的字体颜色?

    今天遇到一个问题,就是复制文档的时候有几块红色字体想改成黑色,怎么也改不成功,通过修改字体颜色无效,通过百度找到了解决方法记录一下. 解决方法 审阅--显示标记--点击插入和删除(去掉前面的对钩即可) ...

  4. NPOI 修改指定单元格字体颜色

    //创建一个字体颜色 IFont font = hssfworkbook.CreateFont(); //红色 font.Color = HSSFColor.Red.Index; //样式 ICell ...

  5. Android Them+SharedPreferences 修改程序所有view字体颜色、大小和页面背景

    有这么一个需求,可以对页面的样式进行选择,然后根据选择改变程序所有字体颜色和页面背景.同时下一次启动程序,当前设置依然有效. 根据需求,我们需要一种快速,方便,有效的方式来实现需求,然后可以通过And ...

  6. 修改Vim内注释字体颜色

    vim /etc/vimrc   然后按大写  G 到最后一行,插入 hi comment ctermfg=6          wq保存退出 PS:默认的注释颜色是4  然后有0,1,2,3,4,5 ...

  7. ECharts修改坐标轴,坐标轴字体,坐标轴网格样式以及控制坐标轴是否显示

    转自:http://blog.csdn.net/kirinlau/article/details/72876689 首先要将一个图表显示在前端页面上: var myChart = echarts.in ...

  8. 修改UITextfield的Placeholder字体的颜色

    - (void)viewDidLoad { [super viewDidLoad]; self.title=@"修改UITextField的placeholder字体颜色"; UI ...

  9. textFiled的placeHolder字体颜色

    self.title=@"修改UITextField的placeholder字体颜色"; UITextField *textTF=[[UITextField alloc]initW ...

随机推荐

  1. 【Kubernetes】K8S 网络隔离 方案

    参考资料: K8S-网络隔离参考 OpenContrail is an open source network virtualization platform for the cloud. – Kub ...

  2. Visual Studio 2015中创建C#的Android项目提示"Value cannot be null"的解决方法

    由于之前本机已安装过Android SDK,在安装Visual Studio 2015时跳过了,并没有为Xamarin指定对应路径导致.Visual Studio顶部菜单:Tools > Opt ...

  3. Angular2 组件通信

    1. 组件通信 我们知道Angular2应用程序实际上是有很多父子组价组成的组件树,因此,了解组件之间如何通信,特别是父子组件之间,对编写Angular2应用程序具有十分重要的意义,通常来讲,组件之间 ...

  4. NetBeans invalid jdkhome specified 问题解决方法

    JDK的路径变化会导致 NetBeans 启动时出现错误: 解决办法: There's is an easy way to fix this. Navigate to your NetBeans in ...

  5. yii小细节

    1.main.php增加导航栏严格区分大小写,否则会出现404错误 2.增加'分页'功能---前后台的models里面的search.php 添加 public function search($pa ...

  6. ios Carthage

    使用CocoaPods来管理第三方框架很多人都知道,相对来说Carthage比较陌生,Carthage也是来管理第三方框架的,既然已经有了Cocoapods为什么还要有Carthage呢?使用Cart ...

  7. history命令详解

    Linux下history命令用法 ^_^在项目中希望调用history命令来获取用户的历史记录,方便分析,可是我们平时所见到的history结果是下面这样: # history | head -10 ...

  8. 在Nodejs中如何调用C#的代码

    最近需要在Nodejs中用到C#的代码,从网上了解到可以采用Edgejs来实现Nodejs与C#的代码交互, 直接复制网上的代码运行总是出各种错,填了不少坑,现在把自己的案例代码大致整理一下,方便以后 ...

  9. C++开始前篇,深入编译链接

    C++开始,为什么要写这个东西,因为按照课堂进度的话,现在的C++已经学到模板以及重载了,有时却仍然因为一些小问题无法解答,原因是忘记了开始时学到的知识,深知不能像猴子掰棒子一样,掰一个扔一个,因此, ...

  10. vim 加行号 和取消行号

    :set nu #是加行号 :set nonu #是去掉行号