1. 去除特定类型的警告信息
- 先查看警告类型
当工程中有这种类型警告的时候,在警告窗口,某个警告上,我们右击,显示出右键菜单,选择其中的 Reveal in Log,
- 其中 [-Wxxxxxxxxxx-xxxx-xxx],在这个括号中的就是 这种警告的类型 -W是前缀,这个前缀表示的是 打开这种类型的警告 如果我们是要关闭某种类型的警告的话, 要将 -W换成 -Wno-
- 编译器提供的宏来操作
1 | #pragma clang diagnostic ignored "-Wmultichar" |
整个工程去除某种警告信息:工程的target有一个 Other Warning Flags,在其中添加 -Wno-xxxxx-xx-xx-xx后,再重新编译即可.
2. UITableview去除空白表格
1 | self.tableView.tableFooterView = [UIView new]; |
3.屏幕快照
1 | - (UIImage *)getScreenShot { UIGraphicsBeginImageContext(self.view.bounds.size); [self.view.layer renderInContext:UIGraphicsGetCurrentContext()]; UIImage *image = UIGraphicsGetImageFromCurrentImageContext(); UIGraphicsEndImageContext(); return image; } |
4.设置系统状态栏
- 可以在每个viewController中重写下面的方法
1 | -(UIStatusBarStyle)preferredStatusBarStyle { return UIStatusBarStyleLightContent; } |
也可以使用UIApplication的statusBarStyle方法来设置状态栏,不过,首先需要停止使用View controller-based status bar appearance。在project target的Info tab中,插入一个新的key,名字为View controller-based status bar appearance,并将其值设置为NO。
5.设置导航栏背景颜色
在iOS 7之后,不再使用tintColor属性(这个属性可以用来设置UIBarButtonItem的颜色)来设置导航栏的颜色,而是使用barTintColor属性来修改背景色。
1 | [[UINavigationBar appearance] setBarTintColor:[UIColor yellowColor]]; |
默认情况下,导航栏的translucent属性为YES。另外,系统还会对所有的导航栏做模糊处理,这样可以让iOS 7中导航栏的颜色更加饱和。
6.使用16进制颜色
在开发中,UI设计师经常给开发的颜色值往往都是用十六进制表示的,比如0xffaabb,这就需要我们进行转换后使用.
方案一: 使用下面的宏定义
1
#define UIColorWithRGB(rgbValue) [UIColor colorWithRed:((float)((rgbValue & 0xFF0000) >> 16))/255.0 green:((float)((rgbValue & 0xFF00) >> 8))/255.0 blue:((float)(rgbValue & 0xFF))/255.0 alpha:1.0] // 使用示例 UIColor *color = UIColorWithRGB(0x23A5D3);
方案二: 使用下面分类方法
1
+ (UIColor *)colorWithHex:(NSString *)string{ { NSString *cleanString = [string stringByReplacingOccurrencesOfString:@"#" withString:@""]; if([cleanString length] == 3) { cleanString = [NSString stringWithFormat:@"%@%@%@%@%@%@", [cleanString substringWithRange:NSMakeRange(0, 1)],[cleanString substringWithRange:NSMakeRange(0, 1)], [cleanString substringWithRange:NSMakeRange(1, 1)],[cleanString substringWithRange:NSMakeRange(1, 1)], [cleanString substringWithRange:NSMakeRange(2, 1)],[cleanString substringWithRange:NSMakeRange(2, 1)]]; } if([cleanString length] == 6) { cleanString = [cleanString stringByAppendingString:@"ff"]; } unsigned int baseValue; [[NSScanner scannerWithString:cleanString] scanHexInt:&baseValue]; float red = ((baseValue >> 24) & 0xFF)/255.0f; float green = ((baseValue >> 16) & 0xFF)/255.0f; float blue = ((baseValue >> 8) & 0xFF)/255.0f; return [UIColor colorWithRed:red green:green blue:blue alpha:1.0]; } } // 使用示例 UIColor *myColor = [UIColor colorWithHex:@"#1c3b2a"];
7.转换参照坐标系
一个UI控件的frame值,默认总是参照它的superView为坐标原点,但有时候我们需要获得到这个控件相对屏幕的坐标时,就需要进行坐标转换.
1 | // 将按钮btn的frame值从父控件的左上角转换为window的左上角为原点进行计算,获得新的frame值 // toView的参数如果传nil,则代表应用的主窗口. CGRect newFrame = [self.btn.superView convertRect:self.btn.frame toView:self.window]; // convertRect:fromView 同上取反即可: CGRect newFrame1 = [self.window convertRect:self.btn.frame fromView:self.btn.superView]; // convertPoint:toView 同理 // convertPoint:fromView 同理 |
8.修改系统控件的readOnly属性值
使用KVC进行修改私有属性或者使用@property声明的(readOnly)的属性;
KVC中,keyPath可以层层寻找属性,key只能在当前的属性中查找.
9.打印输出字典和数组
我们在开发中经常会将数组或者字典中的内容打印出来进行查看,但如果有中文,往往会显示下面的情况
为了能够正常显示中文内容,只要下面的分类代码到项目中即可.
1 | #import "NSArray+ZDLog.h" @implementation NSArray (Log) - (NSString *)descriptionWithLocale:(id)locale { NSMutableString *strM = [NSMutableString stringWithString:@"(\n"]; [self enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { [strM appendFormat:@"\t%@,\n", obj]; }]; [strM appendString:@")"]; return strM; } @end @implementation NSDictionary (Log) - (NSString *)descriptionWithLocale:(id)locale { NSMutableString *strM = [NSMutableString stringWithString:@"{\n"]; [self enumerateKeysAndObjectsUsingBlock:^(id key, id obj, BOOL *stop) { [strM appendFormat:@"\t%@ = %@;\n", key, obj]; }]; [strM appendString:@"}\n"]; return strM; } @end |
10.KVC使用技巧
假设一个数组中存储了许多商品,我们需要将商品的名称提取出来,保存到另外一个数组中使用.通常的做法时先遍历商品数组,然后再获取商品对象的名称后,存到另外一个可变数组中,但使用KVC会更加简介,仅要下面这样的一行代码即可.
1 | NSArray *productNames = [productsArray velueForKeyPath:@"name"]; |
11.scrollview限制滚动方向
当需要限制scrollview的水平或垂直不能滚动时,只需将该方向的值设置为0即可
1 | self.scrollView.ContentSize = CGSizeMake(水平滚动距离值,垂直滚动距离值); |
12. 禁止点击UIPageControl
UIPageControl默认是可以点击每个小圆点的,如果需要取消点击反应,只要不设置宽或高的尺子即可,这样UIpageControl依然可以显示,但不能响应点击事件.