KVC的妙用之UIAlertController的UIAlertAction外观改变
最近赶项目,也遇到了很多,无论是技术还是与同事的交往,感触颇深:1.不要理想的认为你方便了对方,对方就会给你方便;2.程序猿要注重沟通能力;3.学会制作开发计划,复杂的事情要分组来做;4。要学会整理项目
好了,还是切入今天的主题:大家对于KVC和KVO都是很熟悉,但是真正用的时候却不知道从何入手:测试提出个问题:我想把这个文字靠左(如下图)
请问大家如何做:很多人的第一感觉就是去API里面看,可是一看傻眼了,没有属性啊,瞬间崩溃要死的感觉。
聪明的人会根据今天的标题答出:使用KVC。可是到底怎么用,没有暴漏熟悉我怎么根据KVC来做呢?万事不怕有心人,咱们照样有办法,会打断点不,打个断点不就出来了。
没错你没有看错,咱们的首页图片就是断点出来的,所谓八仙过海,咱们就是这样搞到的。
alertView = UIAlertController(title: "controller", message: "测试小例子", preferredStyle: UIAlertControllerStyle.ActionSheet)
var actionTitles = ["1","2"]
for actionTitle in actionTitles {
var action = UIAlertAction(title: actionTitle, style: UIAlertActionStyle.Default, handler: { (action:UIAlertAction!) -> Voidin
})
self.alertView!.addAction(action)
}
presentViewController(self.alertView!, animated: true) { () -> Voidin
}
下面咱们先让它的文字靠左:
看一下文字对齐的方式:
enum NSTextAlignment : Int {
case Left // Visually left aligned
case Center // Visually centered
case Right // Visually right aligned
/* !TARGET_OS_IPHONE */
// Visually right aligned
// Visually centered
case Justified // Fully-justified. The last line in a paragraph is natural-aligned.
case Natural // Indicates the default alignment for script
}
那么咱么需要Left
action.setValue(NSNumber(integer:NSTextAlignment.Left.rawValue), forKeyPath: "titleTextAlignment")
下面看一下,奇迹出现了:
咱们用同样的方法是文字变为其他颜色
action.setValue(UIColor.greenColor(), forKeyPath: "titleTextColor")
我们来看一下整体效果
相关推荐
通过导入这个库,开发者可以更方便地在项目中使用自定义样式的UIAlertController。 总的来说,自定义UIAlertController不仅提升了用户体验,也使应用的视觉风格更加统一。开发者可以根据具体需求,灵活调整Title、...
然而,需要注意的是,不恰当的使用KVC和KVO可能会引入内存泄漏和性能问题,因此在开发时应谨慎使用,并确保在不再需要时及时移除观察者。 这个“KVC-KVO-Demo”项目是一个很好的学习资源,可以帮助开发者深入理解这...
Key-Value Coding(KVC)是Objective-C语言中的一个核心特性,它允许程序以一种间接的方式访问对象的属性,无需使用点语法或 setter/getter 方法。KVC 提供了一种灵活的数据绑定机制,使得开发者能够以更抽象的方式...
1. 创建`UIAlertController`:使用`UIAlertController风格`(`UIAlertControllerStyle`)枚举来定义其外观,如警告(`.alert`)或动作表单(`.actionSheet`)。创建示例: ```swift let alertController = ...
KVC提供了一种间接访问对象属性的方式,无需使用点语法或setter/getter方法。在本文中,我们将深入探讨KVC的原理、实现方式、异常处理以及使用时需要注意的事项。** ### KVC原理 KVC的基础是通过键(key)来查找和...
- **自动化测试**:在单元测试中,可以使用KVC快速检查对象的属性值。 ### 4. KVC与KVO(Key-Value Observing) KVC虽然提供了属性访问的灵活性,但并不包含观察和通知机制。KVO(Key-Value Observing)是基于KVC...
KVC在Objective-C中广泛使用,而在Swift中,虽然不如Objective-C那么常见,但仍然有其应用场景,比如Core Data框架就依赖于KVC。本文将深入探讨Swift KVC的底层实现,特别是涉及的`isa-swizzling`技术。 ### 1. KVC...
**KVC (Key-Value Coding)** 是Objective-C中的一种机制,允许间接访问对象的属性,无需使用点语法或 setter/getter 方法。它主要用于集合操作、序列化和与数据绑定框架的交互。KVC的主要优势在于可以动态地操作对象...
### KVC在定义Model类中的妙用 #### 一、引言 在软件开发中,尤其是在iOS应用开发中,模型视图控制器(Model-View-Controller,简称MVC)架构是一种常用的模式。它有助于分离应用的逻辑层、数据层以及表示层。其中...
本文将详细介绍如何使用KVC来获取和设置对象的属性。 ## 1. KVC基础概念 KVC的核心思想是将属性名转换为字符串键,并通过这个键来访问对象的属性。例如,对于一个名为`Person`的类,它有一个`name`属性,我们可以...
KVC是一种非直接的属性访问方式,允许我们通过字符串键来访问和修改对象的属性,而无需知道属性的名称或使用点语法。KVC的核心是`valueForKey:`和`setValue:forKey:`方法。例如: ```objc Person *person = [...
通过KVC,我们可以用字符串来表示属性名,并动态地设置或获取值。例如,如果我们有一个名为`Person`的类,包含`name`属性,我们可以使用以下方式获取或设置其值: ```objc NSString *key = @"name"; Person *person...
当需要通过多层嵌套的对象来获取或设置值时,则可以使用 key path,即使用 `valueForKeyPath:` 和 `setValue:forKeyPath:` 方法。例如,`person.address.street` 表示访问 `person` 对象中的 `address` 属性的 `...
虽然现在的用途已经超出了最初的设想,但KVC仍然是连接Objective-C和脚本语言的重要桥梁之一。 #### 五、使用KVC简化代码 传统的属性访问方式通常涉及到直接调用getter和setter方法。然而,在某些情况下,比如处理...
### KVC使用方法 #### 访问属性 - **`valueForKey:`**:此方法用于获取对象的属性值。例如,如果你有一个User对象,你可以用`[user valueForKey:@"name"]`来获取名字属性的值。 - **`setValue:forKey:`**:这个...
KVC在Apple的Cocoa和Cocoa Touch框架中广泛使用,简化了数据绑定、集合操作以及与各种数据源(如数据库和XML)的交互。 **1. KVC的基本使用** KVC提供了一种间接访问对象属性的方式,它通过`valueForKey:`和`...
KVC(Key-Value Coding)和KVO(Key-Value Observing)是Objective-C中用于间接访问对象属性的两种重要技术。它们在iOS和Mac OS X开发中广泛应用于数据绑定和动态属性观察。 KVC是一个非正式的协议,名为...
Swift中的Key-Value Coding(KVC)和Key-Value Observing(KVO)是两种强大的数据绑定技术,它们允许程序员间接访问对象的属性并监听这些属性的变化。在本文中,我们将深入探讨这两种技术的使用方法、工作原理以及...
在实际开发中,KVO和KVC通常结合使用,例如在MVVM架构中,模型(Model)的属性变化通过KVO传递给视图模型(ViewModel),然后ViewModel再通过KVC更新视图(View)。这种机制使得数据绑定变得更加简单,降低了业务...
值得注意的是,使用KVC操作对象属性时,需要确保涉及的对象已经被实例化,否则可能会导致错误。 KVC还支持批量赋值,通过`setValuesForKeysWithDictionary:`方法,可以一次性为对象的所有属性设置值。例如,从字典...