热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

iOS获取变量属性:修改UIAlertController样式

iOS8之后系统把UIActionSheet和UIAlertView合并为了UIAlertController,使用就不比多说了,但在使用的过程中发现样式是固定的,点

iOS8 之后系统把UIActionSheet和UIAlertView合并为了UIAlertController,使用就不比多说了,但在使用的过程中发现样式是固定的,点进去也未发现可以提供更改多样式的属性,所以只能使用KVC在运行时动态访问和修改对象的属性。

但在使用过程中需要知道属性类型对应的key值,这里提供两个方法,是别人写好的,借用一下。

//获得所有变量

- (NSArray *)getAllIvar:(id)object
{NSMutableArray *array = [NSMutableArray array];unsigned int count;Ivar *ivars = class_copyIvarList([object class], &count);for (int i = 0; i }


 
//获得所有属性

- (NSArray *)getAllProperty:(id)object
{NSMutableArray *array = [NSMutableArray array];unsigned int count;objc_property_t *propertys = class_copyPropertyList([object class], &count);for (int i = 0; i }


获取到属性之后就可以去设置样式了

经常需要设置message左对齐、段间距这些属性

 

- (IBAction)tapAlertControllerButton:(id)sender {NSString *titleString = @"商家发货规则";NSString *messageString = @"1、买家下单付款后,请尽快发货;\n2、买家下单付款后,若超过最迟发货的时间,商家仍未发货,那么后台将自动取消订单;\n3、若遇到物流高峰期,比如春节,双十一等,请点击【延迟发货】来延长最迟发货时间;\n4、每个订单只允许【延迟发货】一次,每次可延迟5天;";NSString *alertTitle = @"知道了";UIAlertController *_alertController = [UIAlertController alertControllerWithTitle:titleString message:messageString preferredStyle:UIAlertControllerStyleAlert];[_alertController addAction:[UIAlertAction actionWithTitle:alertTitle style:UIAlertActionStyleDefault handler:^(UIAlertAction * _Nonnull action) {}]];/* 修改title */NSMutableAttributedString *attTitleString = [[NSMutableAttributedString alloc] initWithString:titleString];[_alertController setValue:attTitleString forKey:@"attributedTitle"];/* 修改message */NSMutableAttributedString *attMsgString = [[NSMutableAttributedString alloc] initWithString:messageString];// 设置字体[attMsgString addAttribute:NSFontAttributeName value:[UIFont systemFontOfSize:14] range:NSMakeRange(0, attMsgString.length)];// 设置颜色[attMsgString addAttribute:NSForegroundColorAttributeName value:[UIColor blueColor] range:NSMakeRange(0, 10)];NSMutableParagraphStyle *paragraph = [[NSMutableParagraphStyle alloc] init];// 设置行间距[paragraph setLineSpacing:3];// 设置段间距[paragraph setParagraphSpacingBefore:5];// 设置对齐方式[paragraph setAlignment:NSTextAlignmentLeft];// 设置书写方向[paragraph setBaseWritingDirection:NSWritingDirectionLeftToRight];[attMsgString addAttribute:NSParagraphStyleAttributeName value:paragraph range:NSMakeRange(0, attMsgString.length)];[_alertController setValue:attMsgString forKey:@"attributedMessage"];/* 修改按钮的颜色 */NSArray *actionArr = [_alertController actions];[actionArr.firstObject setTitle:alertTitle];[actionArr.firstObject setValue:[UIColor orangeColor] forKey:@"titleTextColor"];[self presentViewController:_alertController animated:YES completion:nil];
}


 


推荐阅读
  • 开发笔记:前端之前端初识
    开发笔记:前端之前端初识 ... [详细]
  • vue引入echarts地图的四种方式
    一、vue中引入echart1、安装echarts:npminstallecharts--save2、在main.js文件中引入echarts实例:  Vue.prototype.$echartsecharts3、在需要用到echart图形的vue文件中引入:   importechartsfrom"echarts";4、如果用到map(地图),还 ... [详细]
  • php三角形面积,335宝石大全
    php三角形面积,335宝石大全 ... [详细]
  • CentOS7通过RealVNC实现多人使用服务器桌面
    背景:公司研发团队通过VNC登录到CentOS服务器的桌面实现软件开发工作为防止数据外泄,需要在RealVNC设置禁止传输文件、访问粘贴板等策略过程&# ... [详细]
  • Java中字符串截取方法详解
    本文详细介绍了Java中常用的字符串截取方法及其应用场景,帮助开发者更好地理解和使用这些方法。 ... [详细]
  • WPF MVVM: 动态添加控件与数据绑定的最佳实践
    本文介绍如何在WPF应用程序中使用MVVM模式动态添加控件并进行数据绑定。通过示例展示如何创建一个虚拟键盘,其中包含多个按键。 ... [详细]
  • 本文介绍了 Oracle SQL 中的集合运算、子查询、数据处理、表的创建与管理等内容。包括查询部门号为10和20的员工信息、使用集合运算、子查询的注意事项、数据插入与删除、表的创建与修改等。 ... [详细]
  • PBO(PixelBufferObject),将像素数据存储在显存中。优点:1、快速的像素数据传递,它采用了一种叫DMA(DirectM ... [详细]
  • iOS snow animation
    CTSnowAnimationView.hCTMyCtripCreatedbyalexon1614.Copyright©2016年ctrip.Allrightsreserved.# ... [详细]
  • RTThread线程间通信
    线程中通信在裸机编程中,经常会使用全局变量进行功能间的通信,如某些功能可能由于一些操作而改变全局变量的值,另一个功能对此全局变量进行读取& ... [详细]
  • 本文详细介绍了如何在 CentOS 7 及其衍生发行版(如 Red Hat, Oracle, Scientific Linux 7)上安装和完全卸载 GitLab。包括安装必要的依赖关系、配置防火墙、安装 GitLab 软件包以及常见问题的解决方法。 ... [详细]
  • 本文介绍了如何使用 Gesture Detector 和 overridePendingTransition 方法来实现滑动界面和过渡动画。 ... [详细]
  • 本文介绍了如何使用Aspose库将Office文件(如Word、PowerPoint)转换为HTML文件,并详细说明了在转换过程中可能出现的乱码问题及其解决方案。 ... [详细]
  • 一个转子曲线面积问题及其反问题的解答
    曾经解答过这样一个问题,从该ID的最后一次登录时间、该ID显示的专业信息,误以为是新闻里某个想不开的同学,不安了一阵子。经确认是我多虑了,不过把问题答案还是写出来。之后就收到一堆要求帮忙算 ... [详细]
  • 申请地址:https://developer.apple.com/appstore/contact/?topic=expedite 常见申请理由:1. 我们即将发布新产品,这是一个媒体活动,我们无法承担任何风险,因此在多个方面努力提升应用质量。 ... [详细]
author-avatar
mobiledu2502916347
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有