今天写项目的时候想到把平时项目中用到的一些小功能全部记录起来,以后查找起来方便,长期更新。。。
1.创建背景渐变
- 代码
/** 创建并设置渐变背景图层 */
//初始化CAGradientlayer对象,使它的大小为渐变背景视图的大小
CAGradientLayer *gradientLayer = [CAGradientLayer layer];
gradientLayer.frame = CGRectMake(0, 0, ScreenWidth, 250);
//设置渐变区域的起始和终止位置(范围为0-1),即渐变路径
gradientLayer.startPoint = CGPointMake(0, 0.0);
gradientLayer.endPoint = CGPointMake(1.0, 0.0);
//设置颜色的渐变过程
NSMutableArray *gradientLayerColors = [NSMutableArray arrayWithArray:@[(__bridge id)[UIColor blueColor].CGColor, (__bridge id)[UIColor yellowColor].CGColor]];
gradientLayer.colors = gradientLayerColors;
[bgView.layer addSublayer:gradientLayer];
-
效果图
屏幕快照 2017-12-02 下午5.39.29.png
2.修改字符串中指定文字的颜色
- 代码
NSMutableAttributedString *hintString=[[NSMutableAttributedString alloc]initWithString:saoText];
//获取要调整颜色的文字位置,调整颜色
NSRange range1=[[hintString string]rangeOfString:@"二维码"];
[hintString addAttribute:NSForegroundColorAttributeName value:RGB(56, 173, 255, 1) range:range1];
labIntroudction.attributedText=hintString;
-
效果图
屏幕快照 2017-12-02 下午5.53.33.png
3.判断后台返回的数据中是否存在某个键,有时候后台返回的数据中我们要根据某个键是否存在来判断,一般我们不判断程序就会崩溃,所以这里有个小方法不让他崩溃
- 代码
if ([result[@"data"] isKindOfClass:[NSDictionary class]] && [result[@"data"] objectForKey:@"dingdan"]) {
//有这个键
}else{
//没有这个键
[weaSelf.navigationController popViewControllerAnimated:YES];
}
-
效果
屏幕快照 2017-12-04 下午2.40.14.png
4.label文字间的间距设置
- 代码
NSMutableParagraphStyle *paraStyle = [[NSMutableParagraphStyle alloc] init];
paraStyle.lineBreakMode = NSLineBreakByCharWrapping;
paraStyle.alignment = NSTextAlignmentLeft;
paraStyle.lineSpacing = 10; //设置行间距
paraStyle.hyphenationFactor = 1.0;
paraStyle.firstLineHeadIndent = 0.0;
paraStyle.paragraphSpacingBefore = 0.0;
paraStyle.headIndent = 0;
paraStyle.tailIndent = 0;
//设置字间距 NSKernAttributeName:@1.5f
NSDictionary *dic = @{NSFontAttributeName:[UIFont systemFontOfSize:14 weight:3], NSParagraphStyleAttributeName:paraStyle, NSKernAttributeName:@1.5f
};
NSAttributedString *attributeStr = [[NSAttributedString alloc] initWithString:[NSString stringWithFormat:@"%@",dict[@"content"]] attributes:dic];
self.lwc_label1.attributedText = attributeStr;
//计算高度
CGSize size = [str boundingRectWithSize:CGSizeMake(width, HEIGHT) options:NSStringDrawingUsesLineFragmentOrigin attributes:dic context:nil].size;
-
效果
屏幕快照 2017-12-05 下午1.17.12.png
5.点击父试图里面子试图以外的地方让试图消失
- 代码
//点击父试图里面子试图以外的地方让试图消失
if (CGRectContainsPoint(bgView.frame, [tap locationInView:view])) {
return;
}else{
[self dismissViewControllerAnimated:YES completion:nil];
}
-
效果
50845CC5-40B7-42D5-B56B-7EFA52B83FE5.png
6时间戳转换,后台传过来一串数字(秒数)时间戳,我们可以转换下
- 代码
1.
//普通时间錯。转年月日 想要什么 改里面的yyyy-MM-dd HH:mm:ss 格式
-(NSString *)changeTime:(NSString*)timeStr
{
NSTimeInterval time=[timeStr doubleValue];
NSDate *detaildate=[NSDate dateWithTimeIntervalSince1970:time];
NSDateFormatter *dateFormatter = [[NSDateFormatter alloc] init];
[dateFormatter setLocale:[NSLocale currentLocale]];
[dateFormatter setDateFormat:@"yyyy-MM-dd HH:mm:ss"];
NSString *textStr = [dateFormatter stringFromDate: detaildate];
return textStr;
}
//2.时间錯 类似于微信的那种发布时间
- (NSString *)updateTimeForRow:(NSString *)createTimeString {
// 获取当前时时间戳 1466386762.345715 十位整数 6位小数
NSTimeInterval currentTime = [[NSDate date] timeIntervalSince1970];
// 创建歌曲时间戳(后台返回的时间 一般是13位数字)
NSTimeInterval createTime = [createTimeString longLongValue]/1000;
// 时间差
NSTimeInterval time = currentTime - createTime;
NSInteger sec = time/60;
if (sec<60) {
return [NSString stringWithFormat:@"%ld分钟前",sec];
}
// 秒转小时
NSInteger hours = time/3600;
if (hours<24) {
return [NSString stringWithFormat:@"%ld小时前",hours];
}
//秒转天数
NSInteger days = time/3600/24;
if (days < 30) {
return [NSString stringWithFormat:@"%ld天前",days];
}
//秒转月
NSInteger months = time/3600/24/30;
if (months < 12) {
return [NSString stringWithFormat:@"%ld月前",months];
}
//秒转年
NSInteger years = time/3600/24/30/12;
return [NSString stringWithFormat:@"%ld年前",years];
}
-
效果
37E941C1-496D-417A-89C3-5150D5779067.png
网友评论