iOS注意点

  • 子控件的x始终与保持父控件宽度一半保持一致:

  • 使用拖拽约束的方法,动态改变约束;

  • 使用masonry,
    make.left.equalTo(superView).with.offset(superView.frame.size.width * 0.2);

  • MacOS 10.12安全与隐私没有允许任何来源的app选项解决办法
    MacOS 10.12之后系统偏好设置-安全&隐私下面去除了允许安装任何来源,导致很多软件运行不了,解决方法:打开终端,输入以下命令
    sudo spctl --master-disable

  • 枚举enum 建议使用 NS_ENUM 和 NS_OPTIONS 宏来定义枚举类型

  • 数据类型的正确使用

int -> NSInteger  
unsigned -> NSUInteger  
float -> CGFloat  
动画时间 -> NSTimeInterval
  • 无论是 MVC 模式还是 MVVM 模式,业务逻辑都不应当写在 Model 里:MVC 应在 C,MVVM 应在 VM。
  • 由于字符串值可能会改变,所以要把字符串相关属性的“内存管理语义”声明为 copy 。
  • 禁止默认的手势滑动返回
- (void)viewWillAppear:(BOOL)animated
{
      [super viewWillAppear:animated];  
      //屏蔽右滑返回手势
      self.navigationController.interactivePopGestureRecognizer.enabled = NO;
}

- (void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    self.navigationController.interactivePopGestureRecognizer.enabled = YES;
}
  • 字符串UTF-8解码编码
    iOS中对字符串进行UTF-8编码:输出str字符串的UTF-8格式
    [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    解码:把str字符串以UTF-8规则进行解码
    [str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
  • UIWebView
// 清除cookies
NSHTTPCookie *cookie;
NSHTTPCookieStorage *storage = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (cookie in [storage cookies]) { [storage deleteCookie:cookie];}
// 清除UIWebView的缓存
[[NSURLCachesharedURLCache] removeAllCachedResponses];
  • null的处理
    [string isKindOfClass:[NSNull class]];
    数组不允许是nil,其他情况例如setText:可以是nil
    null都不允许,可以用上面的方法排除;
  • arc环境下编译非arc
    -fno-objc-arc
  • 随机数:
    arc4random( ) 会生成任意正整数和0
    arc4random_uniform(100) 会生成0~99的整数 (包括0和99,但是没有100)
  • 打电话
    三种方式:
    1>@“tel://10010”; openURL,缺点但是不会回到应用
    2>@“telprompt://10010”; openURL,缺点是私有API,所以可能不会被审核通过
    3>添加webView loadRequest,要注意其中webview没有frame
  • 发短信
    1>@“sms://10010” openURL
    2>#import<MessageUI/MessageUI.h]] >
  • 发邮件
    1>@“mailto://10010@qq.com” openURL
    2>控制器
  • 为应用评分
    注意一定要有Apple ID
NSString*appid =@"725296055";       
NSString*str = [NSStringstringWithFormat:@"itms-apps://itunes.apple.com/cn/app/id%@?mt=8", appid];
// 或者也可以写http://
NSURL*url = [NSURL URLWithString:str];
[[UIApplicationsharedApplication]openURL:url];
  • 对数组中每一个对象都执行同样的操作有两种方法:
    一种是遍历数组,拿到所有的对象,进行操作;
    还有一种是[array makeObjectsPerformSelector:@selsetor() withObject:…];
  • 计时器的方法,如果刷新的比较慢,通常是NSTimer,但是如果在很短的时间里面调用很多次方法,用CADisplayLink,一秒内刷新60次
// 新建定时器
CADisplayLink*link = [CADisplayLinkdisplayLinkWithTarget:self selector:@selector(update)];
[link addToRunLoop: [NSRunLoop mainRunLoop]forMode:NSDefaultRunLoopMode];
self.link= link;
// CADisplayLink 作为成员变量的时候属性参数strong
// 取消定时器:
[self.link invalidate];
self.link=nil;
  • 显示/隐藏Mac隐藏文件命令如下:
    显示Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool true
    隐藏Mac隐藏文件的命令:defaults write com.apple.finder AppleShowAllFiles -bool false
  • Tabbar的默认高度是49
    //设定Tabbar的点击后的颜色
    [[UITabBar appearance] setTintColor:[UIColor redColor]];
    //设定Tabbar的颜色
    [[UITabBar appearance] setBarTintColor:[UIColor whiteColor]];
  • 自定义了leftBarbuttonItem左滑返回手势失效了怎么办
self.navigationItem.leftBarButtonItem = [[UIBarButtonItem alloc] initWithImage:img style:UIBarButtonItemStylePlain target:self action:@selector(onBack:)];
self.navigationController.interactivePopGestureRecognizer.delegate = (id<UIGestureRecognizerDelegate>)self;
  • ScrollView莫名其妙不能在viewController划到顶怎么办
    self.automaticallyAdjustsScrollViewInsets = YES;
  • 如果要使用静态单元格,则需要storyboard的UITableViewController
  • 根据URL创建 NSURLRequest 请求
NSURLRequest *request = [[NSURLRequest alloc]initWithURL:url cachePolicy:NSURLRequestReloadIgnoringCacheData timeoutInterval:60];
//参数cachePolicy表示缓存策略,枚举类型,值有以下几种:
NSURLRequestUseProtocolCachePolicy = 0 NSURLRequest默认的cache policy,使用Protocol协议定义。是最能保持一致性的协议。
NSURLRequestReloadIgnoringCacheData = 1 忽略缓存直接从原始地址下载
NSURLRequestReturnCacheDataElseLoad = 2  只有在cache中不存在data时才从原始地址下载
NSURLRequestReturnCacheDataDontLoad = 3  只使用cache数据,如果不存在cache,请求失败;次策略用于没有建立网络连接离线模式;
NSURLRequestReloadIgnoringLocalAndRemoteCacheData = 4,  忽略本地和远程的缓存数据,直接从原始地址下载,与NSURLRequestReloadIgnoringCacheData类似。
NSURLRequestReloadRevalidatingCacheData = 5  验证本地数据与远程数据是否相同,如果不同则下载远程数据,否则使用本地数据。
  • 一个视图可以有很多个手势,但是一个手势只能添加到一个视图,如果需要添加到另一个视图中,需要再新建一个手势;并且一个view是可以添加多个手势,但是默认只有一个有效,要使多个手势有效,要实现手势代理方法,遵守协议<UIGestureRecognizerDelegate>,并且每个手势都要设置代理gesture.delegate = self;
/** *  是否允许多个手势识别器同时有效 *  Simultaneously : 同时地 */
 - (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer
shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer
{ 
   return YES;
}
  • 非arc文件和arc文件共存
    将非arc文件在arc环境下共存:
    标记非arc文件:-fno-objc-arc
    将arc文件在非arc环境下共存:
    标记arc文件:-f-objc-arc
  • 随机颜色
int r = arc4random_uniform(255+1); // 表示生成0~255的随机整数     
UIColor*color = [UIColor colorWithRed:(r)/255.0 green:(r)/255.0 blue:(r)/255.0 alpha:1.0];
  • 图层抖动
CAKeyframeAnimation *shake = [CAKeyframeAnimation  animation];
shake.keyPath = @“transform.translation.x”
shake.duration = 0.15;
CGFloat delta = 10;
shake.values = @[@0, @( - delta), @0, @(delta)];
shake.repeatCount = 2;
[self.view.layer addAnimation: shake forKey:nil];
  • 区分BundleVersion和BundleShortVersionString


    区分BundleVersion和BundleShortVersionString .gif

    CFBundleVersion
    CFBundleShortVersionString

  • iOS启动和关闭状态栏网络请求标志
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:YES];// 启动状态栏网络请求指示  
[[UIApplication sharedApplication] setNetworkActivityIndicatorVisible:NO];// 关闭状态来网络请求指示
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343

推荐阅读更多精彩内容

  • *面试心声:其实这些题本人都没怎么背,但是在上海 两周半 面了大约10家 收到差不多3个offer,总结起来就是把...
    Dove_iOS阅读 27,121评论 29 470
  • 1、改变 UITextField 占位文字 颜色和去掉底部白框 [_userName setValue:[UICo...
    i_MT阅读 1,027评论 0 2
  • 前言: 以下内容是作者在实际开发中所总结的,主要列举了一些实用小技巧,也希望在实际开发中能够帮到你。 设置控件的圆...
    暗香有独阅读 1,376评论 6 33
  • 一刻一辈子 初识 那天是我们第一次说话,但短短几分钟的时间让我这个半年都不记得班上一个男生的我记住了你,那个年代男...
    长弓心悦阅读 221评论 0 0
  • “穿过县界长长的隧道,便是雪国”…… 那个如浮萍般云游四方的老先生是否已前往那片诗意雪国? 雪国没有悲伤,没有寒冷...
    趣读书吧阅读 1,056评论 0 13