最近幾天在搭建項目的新框架贴妻,在調用系統(tǒng)相冊的時候(Xcode11)居然遇到了一些UIImagePickerController導航欄的坑袖牙,在這里記錄下牺蹄。
在這里我就不多說調用相冊和相機的操作了(基操作稠集,不贅述)悯恍。
1.我在彈出UIImagePickerController的時候如下
在調用presentViewController方法時會發(fā)現(xiàn)頂部上面有距離库糠,原因是:蘋果將UIViewController的modalPresentationStyle屬性的默認值改成了新加的一個枚舉值UIModalPresentationAutomatic,對于多數(shù)UIViewController坪稽,此值會映射成UIModalPresentationPageSheet曼玩。
解決辦法: 可以在vcpresent之前設置modalPresentationStyle 為 UIModalPresentationFullScreen(imagePickerController.modalPresentationStyle = UIModalPresentationFullScreen;)
2.打開相冊后會發(fā)現(xiàn)整體往上偏移,
這里是我在我的baseVC里面設置了
if (@available(iOS 11.0, *)) {
? ? ? ? [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
}來防止scrollerView在滑動的時候會在頂部留一個小的空隙窒百。既然找到這個問題 黍判,那我們只需要在相冊彈出時修改下即可
if (@available(iOS 11, *)) {
? ? ? ? UIScrollView.appearance.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentAutomatic;
}
然后在回到我們的app時重新寫下
if (@available(iOS 11.0, *)) {
? ? ? ? [[UIScrollView appearance] setContentInsetAdjustmentBehavior:UIScrollViewContentInsetAdjustmentNever];
}
ok,問題解決篙梢。
3.在present出來相冊控制器上顷帖,導航是透明的,用戶體驗很不友好。這里我們需要設置下
#pragma mark--解決UIImagePickerController導航透明問題
- (void)navigationController:(UINavigationController *)navigationController
????? willShowViewController:(UIViewController *)viewController
??????????????????? animated:(BOOL)animated
{
??? if ([navigationController isKindOfClass:[UIImagePickerController class]])
??? { ?
??????? navigationController.navigationBar.translucent = NO;
??????? viewController.navigationController.navigationBar.translucent = NO;
??????? viewController.edgesForExtendedLayout = UIRectEdgeNone;
??????? //設置成想要的背景顏色
//?????? [navigationController.navigationBar setBarTintColor:RedBackColor];
????
??? }
}
很奇怪的一點是 我這樣設置了在ios13之前的版本都是沒有問題的贬墩,我跑了一下ios13發(fā)現(xiàn)雪崩榴嗅,毛用沒有。這可以肯定是ios13導航改變導致的陶舞。然后我就在上面加了一句
if (@available(iOS 13, *)) {
//? ? ? ? ? [[UINavigationBar appearance]setTranslucent:NO];
? ? ? ? }
好像是解決了這個bug嗽测,但是會有一點瑕疵。
4.修改UIImagePickerController導航右側取消按鈕
默認彈出是英文的肿孵,本來以為需要自定義或者重寫下唠粥,后面發(fā)現(xiàn)在info里配置個chinese就可以了。
至此停做,我這次用個相冊遇到的問題及解決方法基本都在這了晤愧。但是我覺得代碼還是不友好,歡迎遇到類似問題的道友指正蛉腌。謝謝官份!