У меня есть ViewController
, и когда пользователь щелкает его в нижней части, то другие ViewController
всплывают с помощью segue Present Modally
. Можно ли предоставить им нестандартный размер? Я попробовал предоставить контентный размер на Use Preferred Explicit Size
, но это не помогло. Я хочу, чтобы VC всплыл и взял 70% от текущего VC.Как установить нестандартный размер для представления Modally ViewController
ответ
решаемые его с помощью UIContainerView
вместо "Present модально" Segue.
Вот как я это сделал, если кто-то еще борется с той же проблемой.
НЕ УСТАНАВЛИВАЙТЕ ЛЮБОЙ СЕГЕ/ВЕДУЩИЙ В VC B/W UIContainerView
. Добавьте идентификатор STORYBOARD.
@IBOutlet weak var containerView: UIView!
weak var currentViewController: UIViewController?
override func viewDidLoad() {
self.currentViewController = self.storyboard?.instantiateViewController(withIdentifier: "ContainerVC")
self.currentViewController!.view.translatesAutoresizingMaskIntoConstraints = false
self.addChildViewController(self.currentViewController!)
self.addSubview(subView: self.currentViewController!.view, toView: self.containerView)
super.viewDidLoad()
}
//MARK:- CONTAINER VIEW
func addSubview(subView:UIView, toView parentView:UIView) {
parentView.addSubview(subView)
var viewBindingsDict = [String: AnyObject]()
viewBindingsDict["subView"] = subView
parentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "H:|[subView]|",
options: [], metrics: nil, views: viewBindingsDict))
parentView.addConstraints(NSLayoutConstraint.constraints(withVisualFormat: "V:|[subView]|",
options: [], metrics: nil, views: viewBindingsDict))
}
func cycleFromViewController(oldViewController: UIViewController, toViewController newViewController: UIViewController) {
oldViewController.willMove(toParentViewController: nil)
self.addChildViewController(newViewController)
self.addSubview(subView: newViewController.view, toView:self.containerView!)
newViewController.view.alpha = 0
newViewController.view.layoutIfNeeded()
UIView.animate(withDuration: 0.5, animations: {
newViewController.view.alpha = 1
oldViewController.view.alpha = 0
},
completion: { finished in
oldViewController.view.removeFromSuperview()
oldViewController.removeFromParentViewController()
newViewController.didMove(toParentViewController: self)
})
}
ТОГДА, КОГДА ВЫ ХОТИТЕ ИЗМЕНИТЬ ВИД СОГЛАСНО ДЕЙСТВИЯ
let newViewController : DestinationVC = self.storyboard?.instantiateViewController(withIdentifier: "DestinationVC") as! DestinationVC
newViewController.data = dataToBeSentViaSegue // Passing DATA
newViewController.view.translatesAutoresizingMaskIntoConstraints = false
self.cycleFromViewController(oldViewController: self.currentViewController!, toViewController: newViewController)
self.currentViewController = newViewController
Посмотрите на это и дайте мне знать, если вы хотите получить какие-либо разъяснения.
__weak IBOutlet UIView *conViewers;
- (void)callingOfCustomView:(UIViewController *)showPushedVC
{
[showPushedVC.view setTranslatesAutoresizingMaskIntoConstraints:YES];
showPushedVC.view.frame = conViewers.bounds;
//**>> Add child view into container view
[conViewers addSubview: showPushedVC.view];
[self addChildViewController: showPushedVC];
[showPushedVC didMoveToParentViewController:self];
}
UIStoryboard *storyboard = [UIStoryboard storyboardWithName:@"Main" bundle: nil];
ViewersVC *objViewers = [storyboard instantiateViewControllerWithIdentifier:@"ViewersVC"];
[self callingOfCustomView:objViewers];
Обновите это быстро.
Вы должны добавить вид 70% размера на второй VC
(я имею в виду, который вы представляете), и установить цвет фона, который VC's view
в clear color
так, что для оставшихся 30% будет отображаться предыдущий VC.
Например высота вашего VC составляет 100 точек, то добавьте еще view
с высотой 70 pixel
и установить clear background color
к self.view
Я имею в виду основного вида ОК!
Теперь установите modalPresentationStyle
в свой ВК, прежде чем представить его, как,
yourVC.modalPresentationStyle = UIModalPresentationOverCurrentContext;
[self presentViewController:yourVC animated:YES completion:^{
}];
Если вы даете поддержку меньшее, чем ios 8
то вам необходимо установить setModalPresentationStyle
в NavigationController(If you are using else parent view controller - which are presenting view controller)
как,
[self.navigationController setModalPresentationStyle:UIModalPresentationCurrentContext];
[self presentViewController:yourVC animated:YES completion:^{
}];
Swift:
yourVC.modalPresentationStyle = UIModalPresentationStyle.OverCurrentContext
self.presentViewController(yourVC, animated: true) {
}
или
self.navigationController?.modalPresentationStyle = UIModalPresentationStyle.CurrentContext
self.presentViewController(yourVC, animated: true) {
}
Но мне нужны действия, которые будут выполняться в кнопках, которые будут ниже 30% от просмотра. И в зависимости от выбора кнопки изменяется мое содержание. – Nitesh
Также получена эта ошибка с помощью этой причины: «Приложение попыталось представить модально активный контроллер» – Nitesh
Если вы хотите обрабатывать действия из этой части, тогда вы должны пойти с «ContainerView», или вы можете добавить такой же интерфейс в текущий вид, чтобы что каждый может почувствовать, что это предыдущий! – Lion
- 1. Представить viewcontroller modally
- 2. Как установить нестандартный размер для модальности UIActivityViewController?
- 3. Отображение ViewController из TabView modally
- 4. Как нестандартный размер AVcapture
- 5. Present ViewController modally показывает странную анимацию
- 6. Как установить нестандартный размер для курсора в swing?
- 7. ScatterViewItem нестандартный размер
- 8. Динамически определять размер представления viewcontroller в viewDidLoad
- 9. Установить размер пользовательского представления
- 10. Нестандартный размер в Wicked_PDF
- 11. Fabric.js: Как установить нестандартный размер текста или IText?
- 12. Xamarin.Forms установить размер пользовательского представления
- 13. Нестандартный размер класса для контроллера детского вида
- 14. Нестандартный размер SKLabelNode между устройствами
- 15. Нестандартный размер .ico с CSS
- 16. Как установить BC для ViewController
- 17. Как установить уже созданный ViewController для просмотра
- 18. Android: Нестандартный размер пункта меню
- 19. Как настроить размер viewcontroller на странице viewcontroller
- 20. Отклонение представления modal ViewController
- 21. viewWillAppear не вызывается при представлении viewController modally (iOS)
- 22. Установленный размер для частичного представления
- 23. Ошибка представления ViewController
- 24. Как установить UIBarButtonItem tintcolor на нестандартный UIColor
- 25. UIPresentationController - размер представления представления?
- 26. Передача представления ViewController внутри таблицыCell
- 27. Как установить нестандартный язык в DHTML
- 28. ViewController как делегат табличного представления пользовательского вида
- 29. Добавление представления viewcontroller в качестве подсмотра представления
- 30. Программных установить Нестандартный формат бумага для Crystal Report
Вы пытаетесь на iPhone или IPad? –
iPhone только на данный момент. – Nitesh
Вы можете проверить это http://stackoverflow.com/questions/25811199/ios-8-change-the-size-of-presented-modal-view-controller –