WKWebView禁用捏合手势
WKWebview本身不支持捏合手势,但是如果把WKWebview放到ScrollView上面,由于ScrollView支持捏合手势,导致WKWebview的内容会支持捏合手势。这种情况下要禁止WKWebview捏合手势就需要添加如下代码:
1 | - (void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified WKNavigation *)navigation |
WKWebview本身不支持捏合手势,但是如果把WKWebview放到ScrollView上面,由于ScrollView支持捏合手势,导致WKWebview的内容会支持捏合手势。这种情况下要禁止WKWebview捏合手势就需要添加如下代码:
1 | - (void)webView:(WKWebView *)webView didCommitNavigation:(null_unspecified WKNavigation *)navigation |
如果要在App内简单地实现语音播报功能,使用AVSpeechSynthesizer就可以实现:
1 | AVSpeechSynthesizer *speechSynthesizer = [[AVSpeechSynthesizer alloc]init]; |
值得注意的是,在不同的iOS版本的设备上语音速度有所不同。正常的语速设置:
自适应屏幕宽度
在创建WKWebview时,添加js:
1 | NSString *jScript = @"var meta = document.createElement('meta'); meta.setAttribute('name','viewport'); meta.setAttribute('content', 'width=device-width'); document.getElementsByTagName('head')[0].appendChild(meta);"; |
通常向collectionView注册cell、header、footer时,我们会使用:
1 | [collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:cellId]; |
但是,如果cell、header、footer是使用xib创建的,就会发现这样注册到collectionView,collectionView的内容展示不出来。这时候就需要使用Nib文件来实现:
最近写项目时,发现了一个问题:
使用presentViewController
方法present到一个包含childViewControllers的containerController时,containerController的childViewConroller是一个xib创建的viewControllerA,present之后,ViewControllerA的frame等于ViewControllerA的xib尺寸,而不是屏幕大小(比如,ViewControllerA的xib尺寸是375x667,在7 Plus上展示的时候,得到的ViewControllerA仍然是375x667);而同样是作为childViewController的ViewControllerB用纯代码创建,则能够按照屏幕尺寸正确展示。
FMDB
以OC的方式封装了SQLite
的C语言API。所以相对使用底层语言实现的Sqlite
来说,FMDB
主要有以下优点:
使用起来更加面向对象,省去了很多麻烦、冗余的C语言代码;
对比苹果自带的Core Data
框架,更加轻量级和灵活;
提供了多线程安全的数据库操作方法,有效地防止数据混乱。
Core Location框架用来确定设备物理位置。
Map Kit框架用于创建实时交互地图来显示想要的位置。
Core Location通过三种技术来实现定位功能:GPS、蜂窝基站ID定位(cell ID Location)和WPS(WIFI Position Service,WIFI定位服务)。其中,GPS定位是最精确的。