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,所以这个文件也会包含桥接文件,具体为:
- 没有自定义桥接文件,则使用的桥接文件$(SWIFT_MODULE_NAME).h, 即:#import <$(SWIFT_MODULE_NAME)/$(SWIFT_MODULE_NAME).h>
- 自定义了桥接文件,则:#import “filePath/BridgeFile.h”
也就是说,这个文件并不是使用umbrella header作为桥接文件,而是使用$(SWIFT_MODULE_NAME).h或者Objective-C Bridging Header配置的文件作为桥接文件。比如pod FrameWork,并不会使用$(SWIFT_MODULE_NAME)-umbrella.h
相册权限
相册权限包括读和写:NSPhotoLibraryUsageDescription
& NSPhotoLibraryAddUsageDescription
- 使用
PHPhotoLibrary.requestAuthorization
同时申请读写权限。- 如果用户同意授权,则可以读+写照片
- 如果用户拒绝,则调用
UIImageWriteToSavedPhotosAlbum
方法的时候,会再次向用户请求单独“写”照片权限。
- 使用
UIImageWriteToSavedPhotosAlbum
直接写图片,则会请求用户获取“写”照片权限。- 不论用户拒绝还是同意,再次调用
PHPhotoLibrary.requestAuthorization
,都会向用户请求读+写照片权限
- 不论用户拒绝还是同意,再次调用
- 注意我们无法获取单独“写”照片权限的状态,只能通过
UIImageWriteToSavedPhotosAlbum
写照片,查看是否有error。参看:detect-add-photos-only-permission
NestScrollView
SwipeTableView:单个UIScrollView,header放在contentInset位置,运用了KVO监听contentOffset修改header。
SegementSlide, 原理 :手势穿透,运用了KVO监听contentOffset,并增加标志位,实时修改两个scrollView的contentoffset
MXParallaxHeader:运用了KVO监听contentOffset
LTScrollView:使用swizzle获取scrollView didScroll。