前言
hello 大家好,记录一些常用和不常用的iOS知识点,防止遗忘丢失,如果你有更好的方法请告诉我,互相学习。
一、调用代码使APP进入后台,达到点击Home键的效果。(私有API)
[[UIApplication sharedApplication] performSelector:@selector(suspend)];
suspend的英文意思有:暂停; 悬; 挂; 延缓;
二、带有中文的URL处理。
编码
NSString* string1 = @"https://www.cloudsafe.com/文件夹";
NSString* string2 = [string1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
解码
NSString* string3 = [string2 stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
三、获取UIWebView的高度
- (void)webViewDidFinishLoad:(UIWebView *)webView {
CGFloat height = [[webView stringByEvaluatingJavaScriptFromString:@"document.body.offsetHeight"] floatValue];
CGRect frame = webView.frame;
webView.frame = CGRectMake(frame.origin.x, frame.origin.y, frame.size.width, height);
}
四、给UIView设置图片(UILabel一样适用)
第一种方法
UIColor *bgColor = [UIColor colorWithPatternImage: [UIImage imageNamed:@"bgImg.png"];
UIView *myView = [[UIView alloc] initWithFrame:CGRectMake(0,0,320,480)];
[myView setBackGroundColor:bgColor];
第二种方法
UIImage *image = [UIImage imageNamed:@"yourPicName@2x.png"];
yourView.layer.contents = (__bridge id)image.CGImage;
//设置显示的图片范围
yourView.layer.contentsCenter = CGRectMake(0.25,0.25,0.5,0.5);//四个值在0-1之间,对应的为x,y,width,height。
五、去掉UITableView多余的分割线(数据未充满屏幕)
tableView.tableFooterView = [UIView new];
六、UITableView收起键盘
何必这么麻烦,一个属性搞定,效果好(UIScrollView同样可以使用)
以前是不是觉得[self.view endEditing:YES];很屌,这个下面的更屌。
yourTableView.keyboardDismissMode = UIScrollViewKeyboardDismissModeOnDrag;
另外一个枚举为UIScrollViewKeyboardDismissModeInteractive,表示在键盘内部滑动,键盘逐渐下去。
七、获取今天是星期几
+ (NSString *) getweekDayStringWithDate:(NSDate *) date{
NSCalendar * calendar = [[NSCalendar alloc] initWithCalendarIdentifier:NSGregorianCalendar]; // 指定日历的算法
NSDateComponents *comps = [calendar components:NSWeekdayCalendarUnit fromDate:date];
// 1 是周日,2是周一 3.以此类推
NSNumber * weekNumber = @([comps weekday]);
NSInteger weekInt = [weekNumber integerValue];
NSString *weekDayString = @"(周一)";
switch (weekInt) {
case 1:{
weekDayString = @"(周日)";
}
break;
case 2:{
weekDayString = @"(周一)";
}
break;
case 3:{
weekDayString = @"(周二)";
}
break;
case 4:{
weekDayString = @"(周三)";
}
break;
case 5:{
weekDayString = @"(周四)";
}
break;
case 6:{
weekDayString = @"(周五)";
}
break;
case 7:{
weekDayString = @"(周六)";
}
break;
}
return weekDayString;
八、UIView的部分圆角问题
UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(120, 10, 80, 80)];
view2.backgroundColor = [UIColor redColor];
[self.view addSubview:view2];
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view2.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = view2.bounds;
maskLayer.path = maskPath.CGPath;
view2.layer.mask = maskLayer;
//指定了需要成为圆角的角。该参数是UIRectCorner类型的,可选的值有:
* UIRectCornerTopLeft
* UIRectCornerTopRight
* UIRectCornerBottomLeft
* UIRectCornerBottomRight
* UIRectCornerAllCorners
九、设置滑动的时候隐藏navigationBar
self.navigationController.hidesBarsOnSwipe = YES;
十、自动布局中多行UILabel,需要设置其preferredMaxLayoutWidth属性才能正常显示多行内容。另外如果出现显示不全文本,可以在计算的结果基础上+0.5。
CGFloat h = [model.message boundingRectWithSize:CGSizeMake([UIScreen mainScreen].bounds.size.width, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:attributes context:nil].size.height+0.5;
网友评论