Не могу представить контроллер представления модально, с определенным размером

У меня есть контроллер представления, в котором он представляет другой контроллер представления модально (анимация снизу вверх).

Я пытаюсь представить View Controller с определенным размером, я хочу, чтобы он был представлен модально, но в этом случае он должен составлять 80% от его собственного размера.

let newVC = tabBarController.storyboard?.instantiateViewController(withIdentifier: "newPostVC") as? NewPostVC
newVC.view.frame = CGRect(x: 0, y: 0, width: tabBarController.view.frame.width, height: tabBarController.view.frame.height * 0.8)

tabBarController.present(newVC, animated: true)

Но контроллер представления представлен в полном размере (размере экрана). Я думаю, что нужно подергать размер контроллера представления, но могу ошибаться.

В моем контроллере представления в раскадровке для переходного стиля установлено значение «Вертикальное покрытие», а для параметра «Презентация» установлено значение «Полный экран».

Может ли это быть проблемой?

Вы можете мне намекнуть?

Спасибо :)


person Ivan Cantarino    schedule 12.03.2017    source источник
comment
Я пробовал использовать newVC.view.layer.masksToBounds = true, и это не помогло   -  person Ivan Cantarino    schedule 12.03.2017
comment
Взгляните сюда stackoverflow.com/questions/25811199/   -  person Priyatham51    schedule 12.03.2017
comment
Хм .. кажется это для меня: D гляну. Спасибо   -  person Ivan Cantarino    schedule 12.03.2017
comment
Возможный дубликат ios 8 изменяет размер представленного / модального просмотр контроллера   -  person Priyatham51    schedule 12.03.2017
comment
предоставленная вами ссылка немного устарела, она с 2014 года для iOS 8, и объяснение там немного сбивает с толку   -  person Ivan Cantarino    schedule 12.03.2017


Ответы (1)


Попробуйте сделать что-нибудь подобное.

Создайте ContainerVC программно, добавьте newVC в качестве подпредставления. В ContainerVC viewDidLoad()

  1. установить ограничения для newVC, равные 80% размеру контейнера. Вы можете использовать некоторую структуру, например Anchorage, чтобы легко установить эти ограничения.
  2. установите свой backgroundColor = .clear
  3. Установите стиль презентации .overCurrentContext, как этот modalPresentationStyle = .overCurrentContext

Представляя это, вы можете что-то вроде этого

//create view controller
    let VC = ContainerVC()
//present modal
    self.present(VC, animated: true, completion: nil) 
person Priyatham51    schedule 12.03.2017
comment
Я разобрался. Я использовал анимацию для отключения контроллера представления внутри контейнера. Я реализовал анимацию для представления контроллера представления внутри контейнера с определенными / желаемыми свойствами, и это сработало. - person Ivan Cantarino; 13.03.2017