https://github.com/dreamengine/DECategories
DECategories 是现代 iOS 开发者一系列有用的属性扩展。这些扩展通过提供众多便利性,使得创建过程更加简单快捷。
以下是包含的属性扩展列表及其提供的功能。
问题: 你有一个图像,但不确定它是否是 png 或 gif。
解决方案: 只需在图像的 NSData 表示上使用 -imageDataMimeType,即可获取 mime 类型字符串(例如 @"image/png")。
问题: 你想存储一个对象数组,但不希望保留它(例如,优先级列表)。
解决方案: 使用 +mutableArrayUsingWeakReferences 并存储起来!
问题: 你正在填充字典,但其中一些对象是可选的,你厌倦了在添加之前对每个对象进行安全检查。
解决方案: 使用 -setObjectIfNonNil:forKey:,只有当对象非空时才会添加。
问题: 你想存储一个对象集合,但不希望保留它(例如,无序列表)。
解决方案: 使用 +mutableSetUsingWeakReferences 并存储起来!
问题: 您的应用程序仅使用默认的通知中心 [NSNotificationCenter defaultCenter],您非常厌倦了总是需要引用它。您还厌倦了每次需要发送数据时都要手动包装 NSNotification 对象。
解决方案: 只需使用 +postNotificationWithName:、postNotificationWithName:object: 和 postNotificationWithName:object:userInfo:,这将会自动为您包装一个 NSNotification 并将其发送到默认的通知中心。
问题:你有绝对文件路径,但你只想得到某个目录相对该文件的路径。(例如,你的应用使用用户提供的文件和文件夹,你想要存储某些路径,但应用更新可能会更改这些文件存储的位置,从而损坏你保存的绝对路径。)
解决方案:使用 -stringWithPathRelativeTo: 来获取相对路径。
问题:你想让 UIButton 的背景颜色随着控制状态的改变而改变。
解决方案:使用 -setBackgroundColor:forState:。
问题:你想从十六进制字符串创建一个 UIColor,或者你想创建一个简洁的 UIColor。
解决方案:要创建十六进制字符串,使用 colorWithHexString:,或者可以使用便利函数 UIColorFromHexString(NSString)。
所有便利函数
UIColorFromValues(float, float, float),UIColorFromValuesWithAlpha(float, float, float, float),UIColorFromIntValues(int, int, int) (0-255),UIColorFromIntValuesWithAlpha(int, int, int, int) (0-255),以及UIColorFromHexString(NSString).问题:你想能够手动取消一个 UIGestureRecognizer。
解决方案:使用 -cancel。
问题:你想创建一个填充特定颜色的 UIImage。
解决方案:使用 +imageWithColor:ofSize:。
问题:你想调整一个 UIImage 的大小,可能是因为图片太大而想要节省内存。
解决方案:使用 +imageWithImage:scaledToSize:,或者 -resizedImageScaledToSize:。
问题:你想给一个 UIImage 添加一个颜色。
解决方案:使用 -imageTintedWithColor:fraction:。
问题:你想要从 nib 文件中轻松地填充一个对象,而无需麻烦。
解决方案:使用 +firstObjectWithNibName:,这个方法将自动创建一个 UINib 对象并将 nib 中的第一个项目返回给你。
问题:你有带有短单元格内容的表格视图,你并不太关心单元格下的空单元格和线条。
解决方案:使用 -applyHideEmptyCellsStyle。
问题:你想直接获取和设置 x、y、width 和 height 值,而不通过 frame。或者,你想从 nib 文件中填充一个 UIView 而希望能更简单一点。
解决方案:提供了 x、y、width 和 height 属性。要快速从 nib 文件中实例化,请使用 +viewFromNib(确保你的 nib 文件与类名匹配)。
问题:你不知道第一个响应者是哪个,但你真的很想找到它。
解决方案:使用-findFirstResponder。 (如果您想放弃第一个响应者而不在乎是谁,只需在您的顶级UIView容器上使用内置的-endEditing:即可)。
问题:您希望有一个工厂方法来轻松构造UIViewController实例。
解决方案:确实存在!您只需使用+controller,它将自动尝试加载您类字符串表示形式的nib文件。如果找不到nib文件,它将程序性地实例化您的控制器。