当网络请失败时取消网络请求任务
网络请求是以任务的方式执行,tasks包含了所有的网络请求任务,调用cancel取消任务
//取消请求
[_manager.tasks makeObjectsPerformSelector:@selector(cancel)];
UITableView分割线的几种写法
1、自定义分割线
2、修改系统的分割线
self.tableView.separatorInset = UIEdgeInsetsMake(0, 0, 0, 0);
3、取消系统给分割线设置的值
self.tableView.separatorStyle = UIEdgeInsetsZero;
清除cell的内边距
self.tableViewCell.layoutMargins = UIEdgeInsetsZero
4、取消系统的分割线,cell高度减一,修改tableView背景色
self.tableView.separatorStyle = UITableViewCellSeparatorStyleNone;
self.tableView.backgroundColor = RGB(220, 220, 221);
重写cell的frame
- (void)setFrame:(CGRect)frame{
frame.size.height -= 1;
[super setFrame:frame];
}
裁剪图片(裁剪圆形图片)
使用layer来设置空间圆角,在iOS9以下版本当在滚动视图的时候会出现卡帧的情况
_iconView.layer.cornerRadius = iconH / 2; _iconView.layer.masksToBounds = YES;
//1.开启图片上下文
//scale
UIGraphicsBeginImageContextWithOptions(image.size, NO, 0);
//2.描述裁剪区域
UIBezierPath *bezierPath = [UIBezierPath bezierPathWithOvalInRect:CGRectMake(0, 0, image.size.width, image.size.height)];
/3.设置裁剪区域
[bezierPath addClip];
//4.画图片
[image drawAtPoint:CGPointZero];
//5.取出图片
image = UIGraphicsGetImageFromCurrentImageContext();
//6.关闭上下文
UIGraphicsEndImageContext();
修改UITextField的光标颜色和占位文本颜色
在自定义的UITextField中设置光标颜色
self.tintColor = [UIColor whiteColor];
1、使用NSAttributedString
NSMutableDictionary *attrs = [NSMutableDictionary dictionary];
attrs[NSForegroundColorAttributeName] = [UIColor lightGrayColor];
self.attributedPlaceholder = [[NSAttributedString alloc] initWithString:self.placeholder attributes:attrs];
文本属性attribute,详细参考(http://www.jianshu.com/p/618a147449d7 )
1、NSKernAttributeName: 跳转字间距
2、NSFontAttributeName:设置字体
3、NSForegroundColorAttributeName :设置文字颜色
4、NSParagraphStyleAttributeName : 设置段落样式
5、NSBackgroundColorAttributeName: 设置文本的背景颜色
6、NSStrokeColorAttributeName:设置文字描边颜色,需要和NSStrokeWidthAttributeName:设置描边宽度,这样就能使文字空心
7、 NSStrikethroughStyleAttributeName:设置删除线
8、NSUnderlineStyleAttributeName:设置文本下划线
9、 NSShadowAttributeName:阴影
10、NSVerticalGlyphFormAttributeName:排版方式
11、NSObliquenessAttributeName:斜体
12、 NSExpansionAttributeName:扁平化
2、使用KVC
占位文本在UITextField中为一个Label,是用kvc获取到该label,从而修改占位文本的颜色
//用kvc获取站位文字的属性名
UILabel *textFieldLabel = [self valueForKey:@"placeholderLabel"];
textFieldLabel.textColor = [UIColor whiteColor];
注意:使用KVC修改占位文本时,需要先设置输入框的占位文字,在设置颜色
3、使用RuntTime解决上一个文字设置的先后问题
先将文字颜色保存起来
- (void)setPlaceholderColor:(UIColor *)placeholderColor{
//给成员属性赋值,runtime给系统的类添加成员属性
//添加成员属性
objc_setAssociatedObject(self, @"placeholderLabel", placeholderColor, OBJC_ASSOCIATION_RETAIN_NONATOMIC);
//用kvc获取站位文字的属性名
UILabel *textFieldLabel = [self valueForKey:@"placeholderLabel"];
textFieldLabel.textColor = placeholderColor;
}
在设置文字的时候重新设置一下文字颜色
- (void)setMePlaceholder:(NSString *)placeholder{
[self setMePlaceholder:placeholder];
self.placeholderColor = self.placeholderColor;
}
- (UIColor *)placeholderColor{
return objc_getAssociatedObject(self, @"placeholderLabel");
}
交换`setPlaceholder:`和`setMePlaceholder:`方法
+ (void)load{
Method setPlaceholder = class_getInstanceMethod(self, @selector(setPlaceholder:));
Method setBDJPlaceholder = class_getInstanceMethod(self, @selector(setMePlaceholder:));
method_exchangeImplementations(setPlaceholder, setBDJPlaceholder);
}
这样就不受顺序的限制,可以直接使用textField.placeholderColor = [UIColor lightGrayColor];
设置占位文本颜色