2016-09-10 5 views
1

При запуске контроллера вида UINavigationBar и UIStatusBar оба мгновенно скрываются между касанием взгляда и силой касания, чтобы вызвать контроллер модального вида.3D-заставка и поп-панель скрывают навигационную панель и строку состояния

Вот три состояния:

1. Без разговоров

enter image description here

2. Когда вы слегка постучать

enter image description here

3. Когда вы вынуждаете прикоснулись

enter image description here

Почему строка состояния и навигационная панель исчезают мгновенно на шаге 2, и как я могу это исправить?

ответ

0

попробовать

navigationController?.hidesBarsOnSwipe = false 

navigationController?.hidesBarsOnTap = false 

Update:

override func prefersStatusBarHidden() -> Bool { 
return false 
} 
+0

К сожалению, не делает разницу! –

+0

проверить обновленный ответ !! – Lion

+0

Это работает очень хорошо, спасибо! – FTFT1234

0

В моем случае это потому, что я не ставил правильный sourceRect в

- (nullable UIViewController *)previewingContext:(id <UIViewControllerPreviewing>)previewingContext 
         viewControllerForLocation:(CGPoint)location 

И IOS использует весь вид кадра как sourceRect, и он накладывается навигационная панель aps и строка состояния.

Например, если вы используете его в Tableview или CollectionView вы должны написать что-то вроде этого:

NSIndexPath *indexPath = [self.collectionView indexPathForItemAtPoint:location]; 
UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:indexPath]; 
// you need to check if indexPath or cell are nil 
CGRect convertedRect = [cell convertRect:cell.bounds toView:self.collectionView]; 
previewingContext.sourceRect = convertedRect; 
// and after that - return needed view controller 

Swift версия:

guard let indexPath = collectionView.indexPathForItem(at: location), 
     let cell = collectionView.cellForItem(at: indexPath) else { 
    return nil 
} 
let convertedRect = cell.convert(cell.bounds, to: collectionView) 
previewingContext.sourceRect = convertedRect 
// and after that - return needed view controller