【发布时间】:2017-09-10 15:36:09
【问题描述】:
我有一个UIViewController,我在ViewDidLoad 中设置了它的大小,如下所示:
//Setting view's frame
let width = UIScreen.main.bounds.size.width - 10
let height = (43 * UIScreen.main.bounds.height) / 100 //%43 of the screen
self.view.frame = CGRect(x: 5, y: 80, width: width, height: height)
在我尝试像这样展示另一个 ViewController 之前效果很好:
//Presenting AutoCompleteVC
self.autocompleteVC = GMSAutocompleteViewController()
self.autocompleteVC.delegate = self
self.present(self.autocompleteVC, animated: true, completion: nil)
在我关闭此视图 (self.autocompleteVC.dismiss(animated: true, completion: nil)) 后,第一个 ViewController 视图的框架变为全屏框架。
知道怎么解决吗?
谢谢!
【问题讨论】:
-
您可以将设置大小从
viewDidLoad更改为viewWillAppear,使其每次出现时都进行设置,对于这个问题,当您提供新的vc时,UIScreen可能会更新为原始屏幕跨度> -
您不应该在视图控制器中设置自己的框架。请详细说明您想要达到的目标。
-
@Kamil.S 为什么不呢?我需要将视图的大小设置为更小
-
没关系,但这不应该是视图控制器的责任。如果您想使用带有框架的“oldschool”方式(与自动布局相反)调整视图大小,您应该在父视图控制器的 didLayoutSubviews 中执行此操作,而不是在“self”vc
标签: ios iphone swift cocoa-touch uiviewcontroller