IOS 开发中遇到的小困难(一)

前言

  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:@"[email protected]"];

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;

你可能感兴趣的:(IOS 开发中遇到的小困难(一))