热门标签 | 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];
}


 


推荐阅读
  • 本文介绍了如何通过ARM编译器组件重定向标准C运行时库的I/O函数,以适应不同的硬件平台。原文链接:https://www.keil.com/pack/doc/compiler/RetargetIO/html/retarget_overview.html ... [详细]
  • YB02 防水车载GPS追踪器
    YB02防水车载GPS追踪器由Yuebiz科技有限公司设计生产,适用于车辆防盗、车队管理和实时追踪等多种场合。 ... [详细]
  • 本文探讨如何利用Java反射技术来模拟Webwork框架中的URL解析过程。通过这一实践,读者可以更好地理解Webwork及其后续版本Struts2的工作原理,尤其是它们在MVC架构下的角色。 ... [详细]
  • 当面临数据库清理任务时,若无删除或重建数据库的权限,可以通过编写SQL脚本来实现批量删除用户自定义的数据表和存储过程。本文将详细介绍如何构造这样的SQL脚本。 ... [详细]
  • 交互式左右滑动导航菜单设计
    本文介绍了一种使用HTML和JavaScript实现的左右可点击滑动导航菜单的方法,适用于需要展示多个链接或项目的网页布局。 ... [详细]
  • 本文探讨了在React项目中实现子组件向父组件传递数据的方法,包括通过回调函数和使用React状态管理工具。 ... [详细]
  • Chapter11&12:DefocusBlur&FinalScene在Camera.h中修改如下:#pragmaonce#define_USE ... [详细]
  • 深入解析Android中的SQLite数据库使用
    本文详细介绍了如何在Android应用中使用SQLite数据库进行数据存储。通过自定义类继承SQLiteOpenHelper,实现数据库的创建与版本管理,并提供了具体的学生信息管理示例代码。 ... [详细]
  • 本文详细介绍了 Kubernetes 集群管理工具 kubectl 的基本使用方法,涵盖了一系列常用的命令及其应用场景,旨在帮助初学者快速掌握 kubectl 的基本操作。 ... [详细]
  • 本文详细介绍了如何在现有的Android Studio项目中集成JNI(Java Native Interface),包括下载必要的NDK和构建工具,配置CMakeLists.txt文件,以及编写和调用JNI函数的具体步骤。 ... [详细]
  • 本文详细介绍了如何在Android应用中使用GridView组件以网格形式展示数据(如文本和图像)。通过行列布局,实现类似矩阵的数据展示效果。 ... [详细]
  • 本文介绍了在Android项目中实现时间轴效果的方法,通过自定义ListView的Item布局和适配器逻辑,实现了动态显示和隐藏时间标签的功能。文中详细描述了布局文件、适配器代码以及时间格式化工具类的具体实现。 ... [详细]
  • 在Python编程学习过程中,许多初学者常遇到各种功能实现难题。虽然这些问题往往并不复杂,但找到高效解决方案却能显著提升编程效率。本文将介绍一个名为‘30-seconds-of-python’的优质资源,帮助大家快速掌握实用的Python技巧。 ... [详细]
  • Django xAdmin 使用指南(第一部分)
    本文介绍如何在Django项目中集成和使用xAdmin,这是一个增强版的管理界面,提供了比Django默认admin更多的功能。文中详细描述了集成步骤及配置方法。 ... [详细]
  • BFS深搜hashtable来判断是横线还是竖线但是为啥还是90分啊呜呜!找不到原因#define_CRT_SECURE_NO_WARNINGS1#include ... [详细]
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社区 版权所有