強(qiáng)制讓控制器豎屏顯示
- (BOOL)shouldAutorotate
{
return NO;
}
- (UIInterfaceOrientationMask)supportedInterfaceOrientations
{
return UIInterfaceOrientationMaskPortrait;
}
- (UIInterfaceOrientation)preferredInterfaceOrientationForPresentation
{
return UIInterfaceOrientationPortrait;
}
// 隱藏系統(tǒng)狀態(tài)樣
- (BOOL)prefersStatusBarHidden
{
return YES;
}
設(shè)置不讓SFSafariViewController側(cè)滑返回
Swift:
let viewController = SFSafariViewController(URL: url)
presentViewController(viewController, animated: true) {
for view in viewController.view.subviews {
if let recognisers = view.gestureRecognizers {
for gestureRecogniser in recognisers where gestureRecogniser is UIScreenEdgePanGestureRecognizer {
gestureRecogniser.enabled = false
}
}
}
}
OC:
EFKRSafariViewController *safari = [[EFKRSafariViewController alloc] initWithURL:url];
safari.closeHandler = completion;
[self presentViewController:safari animated:YES completion:^{
// 禁止側(cè)滑返回,因?yàn)閭?cè)滑返回導(dǎo)致強(qiáng)制豎屏?xí)兓貦M屏
for (UIView * view in safari.view.subviews) {
NSArray<__kindof UIGestureRecognizer *> * array = view.gestureRecognizers;
if (array.count) {
for (UIScreenEdgePanGestureRecognizer * sepgr in array) {
sepgr.enabled = NO;
}
}
}
}];
如何
創(chuàng)建繼承SFSafariViewController的控制器,在里面添加上面的代碼就可以啦遂填!
總結(jié)
有時(shí)候狈谊,我們?cè)谛薷南到y(tǒng)的控件屬性時(shí)嗅绸,總是希望想找到一個(gè)屬性方法設(shè)置后搞疗,就可以達(dá)到自己想要的 UI或者邏輯嗤朴,但其實(shí)娱仔,系統(tǒng)不可以提供那么多自定義的 API沐飘,所以,我們只能通過(guò)自己去找到想要的東西牲迫,然后去修復(fù)它耐朴,達(dá)到目的。類似的思想盹憎,比如hook筛峭。代碼上也是很其妙。
參考擴(kuò)展
- SFSafariViewController in iOS 9.2 | Apple Developer Forums
- ios - Safari View Controller Swipe Left to dismiss goes black - Stack Overflow
注:本文首發(fā)于 iHTCboy's blog陪每,如若轉(zhuǎn)載影晓,請(qǐng)注明來(lái)源。