iOS中UIAlertController设置自定义标题与内容的方法

前言

相信大家都知道,UIAlertController的标题和内容都是黑色的(对UIAlertController不了解的朋友可以参考这篇文章),但是在很多场景下都需要修改他们的颜色,比如在输入错误时把提示信息变为红色,或者自定义标题的颜色,可是在公开的API接口中好像并没有对应的方法,那么我们应该怎么做呢?下面话不多说了,来一起看看详细的介绍:

第三方控件

第一种方法当然就是使用第三方的Alert控件了,现在Github上有着众多的Alert控件(如SCLAlertView等),相信有很多都可以满足大家的需求,只要使用Cocoapods添加添加第三方库就可以了。

KVC方法

但是也有一些人,不愿意去使用第三方库,而是想要使用系统的UIAlertController,这样当然也是可以的。苹果公司并没有完全的封死对UIAlertController的定制,而是修改为了使用KVC的方法进行定制。如果要自定义标题和内容,可以通过NSAttributedString把字体和颜色设置好,然后在通过KVC的方法进行设置,就可以了。

下面是一个示例代码和对应的截图:

- (void)testAlert {
 UIAlertController *alert = [UIAlertController alertControllerWithTitle:nil message:nil preferredStyle:UIAlertControllerStyleAlert];
 [alert addAction:[UIAlertAction actionWithTitle:@"取消" style:UIAlertActionStyleCancel handler:nil]];
 NSDictionary *titleAttr = @{
  NSFontAttributeName:[UIFont boldSystemFontOfSize:20],
  NSForegroundColorAttributeName:[UIColor greenColor]
  };
 NSAttributedString *attributedTitle = [[NSAttributedString alloc] initWithString:@"测试有颜色标题" attributes:titleAttr];
 [alert setValue:attributedTitle forKey:@"attributedTitle"];

 NSDictionary *messageAttr = @{
  NSFontAttributeName:[UIFont systemFontOfSize:12],
  NSForegroundColorAttributeName:[UIColor redColor]
  };
 NSAttributedString *attributedMessage = [[NSAttributedString alloc] initWithString:@"测试有颜色文本" attributes:messageAttr];
 [alert setValue:attributedMessage forKey:@"attributedMessage"];
 [self presentViewController:alert animated:YES completion:nil];
}

屏幕截图

关于自定义标题和内容就说这么些了,主要还是要看代码才能明白。

总结

以上就是这篇文章的全部内容了,本文还有许多不足,希望本文的内容对大家的学习或者工作具有一定的参考学习价值,如果有疑问大家可以留言交流,谢谢大家对我们的支持。

(0)

相关推荐

  • 在 Swift 中测试 UIAlertController的方法

    最近我读了一篇在 Objective-C 中使用 control swizzling 测试 UIAlertController 的 文章 .这样的文章总是促使我寻找一种不使用 control swizzling 也可以测试同样东西的方法.虽然,我知道 swizzling 是开发者的一个非常有力的工具,但我个人是尽可能去避免去使用它的.事实上,在最近的六年时间里,我只在一个应用上用了 swizzling.所以我相信我们现在可以不使用 swizzling 来实现测试. 那么问题来了,如何在 Swif

  • IOS开发 UIAlertController详解及实例代码

     IOS开发 UIAlertController详解 在iOS 8.0后,苹果弃用了UIAlertView和UIActionSheet,转而使用UIAlertController把之前的UIAlertView和UIActionSheet整合在一起.新版的API变得简洁了不少几行代码就可实现之前一大片代码的功能 UIAlertController* alert = [UIAlertController alertControllerWithTitle:@"My Alert" messag

  • iOS中UIAlertController设置自定义标题与内容的方法

    前言 相信大家都知道,UIAlertController的标题和内容都是黑色的(对UIAlertController不了解的朋友可以参考这篇文章),但是在很多场景下都需要修改他们的颜色,比如在输入错误时把提示信息变为红色,或者自定义标题的颜色,可是在公开的API接口中好像并没有对应的方法,那么我们应该怎么做呢?下面话不多说了,来一起看看详细的介绍: 第三方控件 第一种方法当然就是使用第三方的Alert控件了,现在Github上有着众多的Alert控件(如SCLAlertView等),相信有很多都

  • iOS中Navbar设置渐变色效果的方法示例

    本文主要给大家介绍了关于iOS中Navbar设置渐变色效果的相关内容,分享出来供大家参考学习,下面来看看详细的介绍吧. 设置渐变色 #import "NavigationViewController.h" #define LBColor(r, g, b) [UIColor colorWithRed:(r)/255.0 green:(g)/255.0 blue:(b)/255.0 alpha:1.0] @interface NavigationViewController () @end

  • iOS中UILabel设置居上对齐、居中对齐、居下对齐及文字置顶显示

    iOS中UILabel设置居上对齐.居中对齐.居下对齐 在iOS中默认的UILabel中的文字在竖直方向上只能居中对齐,博主参考国外网站,从UILabel继承了一个新类,实现了居上对齐,居中对齐,居下对齐. 具体如下: // // myUILabel.h // // // Created by yexiaozi_007 on 3/4/13. // Copyright (c) 2013 yexiaozi_007. All rights reserved. // #import <UIKit/UIK

  • iOS中常用设置返回按钮

    //添加返回按钮 -(void)backBtn{ UIButton *backBtn=[[UIButton alloc]initWithFrame:CGRectMake(0, 10, 60, 20)]; [backBtn setTitle:@"返回" forState:UIControlStateNormal]; backBtn.titleLabel.font=[UIFont systemFontOfSize:12]; backBtn.imageEdgeInsets=UIEdgeIns

  • Laravel实现自定义错误输出内容的方法

    本文实例讲述了Laravel实现自定义错误输出内容的方法.分享给大家供大家参考,具体如下: 这里分析一下laravel对于提交的数据进行验证,怎么自定义错误输出的内容 在根目录下运行命令 php artisan make:request PostUpdateRequest 会在app\Http\Requests目录下创建PostUpdateRequest文件 比如我设置 public function rules() { return [ 'posts_title' => 'required',

  • 在iOS中使用OpenGL ES实现绘画板的方法

    今天我们使用 OpenGL ES 来实现一个绘画板,主要介绍在 OpenGL ES 中绘制平滑曲线的实现方案. 首先看一下最终效果: 在 iOS 中,有很多种方式可以实现一个绘画板,比如我的另外一个项目 MFPaintView 就是基于 CoreGraphics 实现的. 然而,使用 OpenGL ES 来实现可以获得更多的灵活性,比如我们可以自定义笔触的形状,这是其他实现方式做不到的. 我们知道,OpenGL ES 中只有 点.直线.三角形 这三种图元.因此, 怎么在 OpenGL ES 中绘

  • IOS中Json解析实例方法详解(四种方法)

    作为一种轻量级的数据交换格式,json正在逐步取代xml,成为网络数据的通用格式. 有的json代码格式比较混乱,可以使用此"http://www.bejson.com/"网站来进行JSON格式化校验(点击打开链接).此网站不仅可以检测Json代码中的错误,而且可以以视图形式显示json中的数据内容,很是方便. 从IOS5开始,APPLE提供了对json的原生支持(NSJSONSerialization),但是为了兼容以前的iOS版本,可以使用第三方库来解析Json. 本文将介绍Tou

  • iOS中从网络获取数据的几种方法的比较

    IOS中获取网络数据一般有三种:1.NSURLCondition(已过时) 2.NSURLSession  3.三方库AFNetWorking NSURLSession 是苹果对NSULRCondition的替代品,NSURLSession比NSURLCondition多了 1.可配置的数据信息NSURLSessionConfiguration,NSURLSessionConfiguration使你可以设置你要请求的数据,通常的设置如缓存,也可以使用默认的配置信息defaultCongurati

  • PHP正则删除html代码中a标签并保留标签内容的方法 原创

    本文实例讲述了PHP正则删除html代码中a标签并保留标签内容的方法.分享给大家供大家参考,具体如下: 一.问题: 有HTML代码如: <div>欢迎访问我们<a href=http://www.jb51.net>www.jb51.net</a></div> 要求正则删除a标签,同时保留a标签内容,如下: <div>欢迎访问我们www.jb51.net</div> 二.解决方法: $str = "<div>欢迎访

  • Android中EditText 设置 imeOptions 无效问题的解决方法

    有时候我们需要在EditText  输出完之后 需要在键盘出现 右下角变成"Go"或"前往 搜索时:通常我们需要设置Android:imeOptions属性.Android:imeOptions的值有actionGo. actionSend .actionSearch.actionDone等 但是今天我发现设置了无效  那是因为我设置了 android:maxLines="1" 解决方法 就是去掉 android:maxLines="1"

随机推荐