APP基本知识_1

Aug 26, 2014


NetWork

Wi-Fi Management APIs cncopycurrentnetworkinfo-with-ios-13 NetworkExtension -> NEHotspotHelper

Hotspot Configuration-> NEHotspotConfigurationManager

Swift OC混编

FrameWork

FrameWork默认的umbrella header文件:$(SWIFT_MODULE_NAME).h

CocoaPods自定义 Module Map File,使用自定义umbrella header文件:$(SWIFT_MODULE_NAME)-umbrella.h

如果Swift文件使用了OC代码,则需要bridge文件,默认使用umbrella header;也可以在Build Settings -> Objective-C Bridging Header中进行配置。

如果这时候OC同时又需要使用Swift类,则需要导入 <$(SWIFT_MODULE_NAME)/$(SWIFT_MODULE_NAME)-Swift.h>。 因为Swift中使用了OC,所以这个文件也会包含桥接文件,具体为:

  1. 没有自定义桥接文件,则使用的桥接文件$(SWIFT_MODULE_NAME).h, 即:#import <$(SWIFT_MODULE_NAME)/$(SWIFT_MODULE_NAME).h>
  2. 自定义了桥接文件,则:#import “filePath/BridgeFile.h”

也就是说,这个文件并不是使用umbrella header作为桥接文件,而是使用$(SWIFT_MODULE_NAME).h或者Objective-C Bridging Header配置的文件作为桥接文件。比如pod FrameWork,并不会使用$(SWIFT_MODULE_NAME)-umbrella.h

相册权限

相册权限包括读和写:NSPhotoLibraryUsageDescription & NSPhotoLibraryAddUsageDescription

  1. 使用PHPhotoLibrary.requestAuthorization同时申请读写权限。
    • 如果用户同意授权,则可以读+写照片
    • 如果用户拒绝,则调用UIImageWriteToSavedPhotosAlbum方法的时候,会再次向用户请求单独“写”照片权限。
  2. 使用UIImageWriteToSavedPhotosAlbum直接写图片,则会请求用户获取“写”照片权限。
    • 不论用户拒绝还是同意,再次调用PHPhotoLibrary.requestAuthorization,都会向用户请求读+写照片权限
  3. 注意我们无法获取单独“写”照片权限的状态,只能通过UIImageWriteToSavedPhotosAlbum写照片,查看是否有error。参看:detect-add-photos-only-permission

NestScrollView

SwipeTableView单个UIScrollView,header放在contentInset位置,运用了KVO监听contentOffset修改header。

SegementSlide原理 :手势穿透,运用了KVO监听contentOffset,并增加标志位,实时修改两个scrollView的contentoffset

MXParallaxHeader:运用了KVO监听contentOffset

UIWebView与UITableView的嵌套方案

LTScrollView:使用swizzle获取scrollView didScroll。

嵌套UIScrollview的滑动冲突解决方案

iOS 嵌套UIScrollview的滑动冲突另一种解决方案

用UIKit-Dynamics模仿UIScrollView