一组便利的分类。
在您的视图布局的Subviews方法中简单放入
CGSize demoLabelSize = [self.demoLabel.text noc_backwardCompatibleSizeWithFont:self.demoLabel.font constrainedToSize:frame.size];
[self.demoLabel setFrame:CGRectMake(originX,
originY,
demoLabelSize.width,
demoLabelSize.height)];
在您的视图布局的Subviews方法中简单放入
CGSize attrubutedStringSize = [attributedString noc_backwardCompatibleSizeConstrainedToSize:CGSizeMake(150, 200)];
[self.demoLabel setFrame:CGRectMake(0, 0, attrubutedStringSize.width, attrubutedStringSize.height)];
为了手动加载您自定义的视图类并将其实例分配给UIViewController的view属性,只需在loadView方法中放入
- (void)loadView {
_aView = [self noc_loadViewOfClass:[NOCExampleView class]]; //_aView is @property of NOCExampleView class stored locally for easier access
}
在您的项目中实际的警告越少越好。打开项目设置 -> 目标 -> 编译设置;搜索“将警告视为错误”并将标志设置为YES。然后所有警告都将被视为错误。您可以以这种方式编写自定义警告(有关更多的警告,请参阅NOCMacros.h)
noc_warnHack("You can add warnings this way. Then enable warnings as errors in your project configuration and write clean code.")
我已经移除了字符串本地化快捷方式。相反,我建议使用Alcatraz软件包管理器与Quick-Localization插件。
如果您有一个变量并想更改内部位但从不记得操作,只需使用
typedef NS_ENUM(NSUInteger, NOCDifficulty) { // you can use NS_OPTIONS instead
NOCDifficultySimple = 1 << 0,
NOCDifficultyMedium = 1 << 1,
NOCDifficultyHard = 1 << 2,
};
int flags = 0;
noc_setBitOne(flags, NOCDifficultyHard);
noc_setBitZero(flags, NOCDifficultyHard);
noc_isBitOne(flags, NOCDifficultyHard)
您绝对不应该通过==比较浮点数等,因为结果可能是误导性的。为了确保永远不会实现此类错误,请打开项目设置 -> 目标 -> 编译设置;搜索“其他警告标志”;粘贴“-Wfloat-equal”。您可以使用便利的方法来比较浮点数
if (noc_isCGFloatEqualToCGFloat(1.f, 1.0)) {
NSLog(@"Float and double are equal");
}
NSLog(@"%.2f", noc_CGFloatAbs(-5));
由于CGFloat将要么是float要么是double(取决于架构),所以在使用round或roundf时您会收到警告。为了不进行类型转换(缩小代码)而使其沉默,请使用
noc_roundCGFloat(1.5)
将十六进制颜色解码为UIColor的便利方法。
[self.demoLabel setBackgroundColor:noc_hexToColor(0xAE323b, 1.f)];
请参阅示例以获取更深入的示例或查看源代码。
在你的项目 git 文件夹中
git submodule init
git submodule add --copy link to the repo--
git submodule update
复制 NOCategories/NOCategories 文件夹中的所有文件。
这很不建议,因为你将无法看到代码更新。克隆或下载源代码,复制 NOCategories 文件夹中的所有文件。
Natalia Osiecka, [email protected]
Apache 2.0 许可下可用。有关更多信息,请参阅 LICENSE 文件。
需要 Xcode 7,目标 iOS 6.0 或更高版本。