开发Tips收集-2017年11月

这些小Tips为本人近期读书笔记,收集来自网络开发者发布的技术文档,并非原创,共享的目的是为了扩散分享技术,共同进步。如有侵权不得转载等情况,请联系我告知,谢谢!

  • 禁止WKWebView的左右弹性属性:让webView的scrollView不能左右滑动即可,也就是让webView的内容一直水平居中。
    self.webView.scrollView.delegate = self;
    • (void)scrollViewDidScroll:(UIScrollView *)scrollView{
      // 让webview的内容一直居中显示
      scrollView.contentOffset = CGPointMake((scrollView.contentSize.width - screenWidth) / 2, scrollView.contentOffset.y);
      }
  • 使用UIWebView装载一个网页后,可能需要提取其内的信息,比较好的方法是使用JavaScript。方法UIWebView.stringByEvaluatingJavaScript可以执行一个脚本。
  • xcode9打包版本只能是8.2及以下版本,或者9.0及更高版本;xcode9不支持8.3和8.4版本;xcode9新打包要在构建版本的时候加入1024*1024 AppSore icon
  • tableView在iOS11默认使用Self-Sizing,tableView的estimatedRowHeight、estimatedSectionHeaderHeight、estimatedSectionFooterHeight三个高度估算属性由默认的0变成了UITableViewAutomaticDimension
  • 模拟器网速调整: 限制时输入下面两行,根据需要修改下面的数字:
    sudo ipfw pipe 1 config bw 350kbit/s plr 0.05 delay 10000ms;
    sudo ipfw add pipe 1 dst-port http
    不想再去限制网速是,输入下面的命令行:
    sudo ipfw flush
  • reloadRowsAtIndexPaths: withRowAnimation: 在刷新的时候会有cell进入和移出的动画, 所以同时需要至少两个可用的的cell(包括复用池中的cell),而 reloadData 会先将所有cell都先放到复用池中, 然后再从复用池中取可以复用的cell
  • UITableViewCell实例上添加子视图,有两种方式:cell addSubview:viewcell.contentView addSubview:view,一般情况下,两种方式没有区别。但是在多选编辑状态,直接添加到cell上的子视图将不会移动,而添加在contentView上的子视图会随着整体右移。所以,推荐使用cell.contentView addSubview:view方式添加子视图
  • 如何便捷地统计代码的行数:
    1. 打开终端;
    2. 通过cd命令到达我们的工程文件,这里注意如果要避免统计引用的第三方库的代码量,我们就要进一步进到我们自己写的代码文件中去,一般是一个与工程文件同名的文件;
    3. 如果想列出每个文件的行数,输入命令:
      find.-name"*.m"-or-name"*.h"-or-name"*.xib"-or-name"*.c"|xargswc-l
    4. 如果想直接列出总代码行数,输入命令:
      find.-name"*.m"-or-name"*.h"-or-name"*.xib"-or-name"*.c"|xargsgrep-v"^$"|wc-l
      这个统计过程会去掉空行,但注释是会计算在内的。
  • 拨打电话的字符串是需要经过NSURL转码,特殊字符需要转换成ASCLL码才能调用。ASCLL码表,#所对应的是%23,*所对应的是%2A
  • UIImagePickerController的裁剪选择视图向下偏移了status bar的高度,但是裁剪的时候还是按照y=0计算,导致结果产生偏移。(猜测是iOS 11 UIScrollView的contentInsetAdjustmentBehavior属性导致)
  • UITableView iOS 11新增了一个属性:dragDelegate
  • 裁剪区域本身就是在 UIImageView 上放上一层 UIView,再在 UIView 上绘制出一个白边框的方格 Layer。
  • 根据苹果文档中关于后台执行的描述,任何app都有10分钟左右的后台任务执行时间。 10分钟后,app会被iOS强行挂起。但是,有5类app允许有“无限的”后台运行时间:
    1. Audio。
    2. Location/GPS。
    3. VoIP。
    4. Newsstand。
    5. Exernal Accessory 。
      你可以将任何app声明为上述5种类型以获得无限的后台运行时间,但当你提交app到App Store时,苹果会审查你的app,一旦发现你“滥用”了后台API,你的app将被拒绝。
  • 跳转 App Store 需要真机运行
  • 在 iOS 11 上,UIViewController 的 automaticallyAdjustsScrollViewInsets 已经 deprecated 了。UIScrollView 自动调整 ContentInset 的行为接下去是自己管理了,而不是让 UIViewController 来管理了。我们可以通过将 UIScrollView 的 contentInsetAdjustmentBehavior 这个新增 UIScrollViewContentInsetAdjustmentBehavior 属性,设置成 .never ,来关掉对它的自动调整。当然了,这个值默认是 .automatic ,也就是会根据 NavigationBar 和 TabBar 来自动调整。

    你看到的是非授权版本!爬虫凶猛,请尊重知识产权!

    转载请注明出处:http://conanwhf.github.io/2017/12/01/Tips201711/

    访问原文「开发Tips收集-2017年11月」获取最佳阅读体验并参与讨论