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文件,它将程序性地实例化您的控制器。