这篇文章是写给自己看的,会将平时一些用得到但又不是特别常用的方法记录在这里,因为只是一些小方法,不至于每个都开一篇文章,所以就汇总在这里,有需要的朋友也可以收藏一下。
读取文件路径
/* 获取文件 URL 路径 */
NSURL *url = [[NSBundle mainBundle] URLForResource:@"test" withExtension:@"png"];
/* 获取文件 path 路径 */
NSString *path = [[NSBundle mainBundle] pathForResource:@"test" ofType:@"png"];
/* 获取 App 沙盒路径 */
NSString *path = [NSHomeDirectory() stringByAppendingPathComponent:@"Documents"];
按比例缩放尺寸来适配不同尺寸的屏幕
/* 得到屏幕尺寸 */
#define kScreenWidth [UIScreen mainScreen].bounds.size.width
#define kScreenHeight [UIScreen mainScreen].bounds.size.height
/* 设置比例缩放 */
#define W(x) ((x)* kScreenWidth / 320.0)
#define H(y) ((y)* kScreenHeight / 568.0)
延迟执行的方法
以下三种方法效果相同,都是在三秒延迟后设置 self.label.text = @"标题";
。
/* 方式一(在当前线程 但不会卡住界面) */
[self.label performSelector:@selector(setText:) withObject:@"标题" afterDelay:3];
/* 方式二(在当前线程 但不会卡住界面) */
[self performSelector:@selector(set) withObject:nil afterDelay:3];
- (void)set {
self.label.text = @"标题";
}
/* 方式三(在其他线程) */
dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(3 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^ {
self.label.text = @"标题";
});
/* 在当前线程 会卡住界面(一般只用作调试) */
[NSThread sleepForTimeInterval:3]; => sleep(3);
转换网址中的中文
/* 用于 GET 方式请求时,参数含有中文时的解决方法 */
NSString *str1 = @"http://apis.baidu.com/apistore/weatherservice/cityname=无锡";
NSString *str2 = [str1 stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
根据类名创建视图控制器对象
UIViewController *viewController = [[NSClassFromString(vcName) alloc] init];
与用户的交互状态
/* 取消与用户的交互,界面上的控件都会失效(也可单独设置某控件,与 enabled 属性有区别) */
self.view.userInteractionEnabled = NO;
将控件显示在视图最前端
/* 会将该子视图放在所有子视图的最前面 */
[self.view bringSubviewToFront:self.button];
图片添加点击事件
有些人给图片添加点击事件时,会发现根本无效,其原因是因为 UIImageView
的 userInteractionEnabled
属性默认是为 NO
的,所以添加了点击事件后,点击却没反应。
/* 图片想要点击事件必须设为YES,默认是NO */
self.imageView.userInteractionEnabled = YES;
SearchBar 或者 TextField 设置第一响应者
/* 就是进入页面直接进入编辑状态 */
[self.searchBar becomeFirstResponder];
自定义 Log 打印
/* 自定义 Log 打印 */
#ifdef DEBUG
#define DString [NSString stringWithFormat:@"%s", __FILE__].lastPathComponent
#define DLog(fmt, ...) NSLog((@"[%@ : %d 行] " fmt), DString, __LINE__, ##__VA_ARGS__)
#else
#define DLog(...)
#endif
获取当前设备系统版本号
/* 当前设备系统版本号 */
#define kDeviceSystemVersion [[UIDevice currentDevice].systemVersion doubleValue]
颜色转换为图片
/**
颜色转换为图片
@param color 要转换的颜色
@return 转换后的图片
*/
+ (UIImage *)imageWithColor:(UIColor *)color {
CGRect rect = CGRectMake(0.0f, 0.0f, 1.0f, 1.0f);
UIGraphicsBeginImageContext(rect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [color CGColor]);
CGContextFillRect(context, rect);
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return image;
}
通过 storyboard 的 Identity 来查找对象
设置 Storyboard ID/* 需设置要查找视图的ID */
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle:nil];
UITabBarController *tab = [storyboard instantiateViewControllerWithIdentifier:@"tab"];
/* 根据根视图查找 */
UITabBarController *tab = storyboard.instantiateInitialViewController;
全局引用头文件
$(SRCROOT)/2048/define.h
是相对路径,表示 2048
项目文件夹下的 define.h
文件。
解决 iOS11 中 ScrollView 顶部白边和 TableView 刷新抖动的问题
// 解决 iOS11 中 ScrollView 顶部白边和 TableView 刷新抖动的问题
if (@available(iOS 11.0, *)) {
UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever;
UITableView.appearance.estimatedRowHeight = 0;
UITableView.appearance.estimatedSectionHeaderHeight = 0;
UITableView.appearance.estimatedSectionFooterHeight = 0;
}
将来的你,一定会感激现在拼命的自己,愿自己与读者的开发之路无限美好。
网友评论