我正在开发一个应用程序,我在顶部有一个NavigationBar,并添加了一个UIViewController作为RootViewController。
现在我的计划是向这个UIViewController添加一个新的Subview。新的Subview也扩展了UIViewController。我将控制器的de view(Gray Rect)添加到UIViewController,但它放在NavigationBar后面。我不想那样..所以我搜索了一个解决方案并找到了一些有趣的东西..: 当我只是向UIViewController添加一个UIView()(绿色矩形)时,视图的放置工作完美,我希望从其他UIViewController-View看到它。 我的代码如下:
class DashboardController: UIViewController {
var ccview:ContactCircleController!
override func viewDidLoad() {
super.viewDidLoad()
edgesForExtendedLayout = []
self.view.backgroundColor = .white
let test = UIView()
test.backgroundColor = .green
test.frame = CGRect(x: self.view.frame.width - 200, y: 0, width: self.view.frame.width / 2, height: self.view.frame.width / 2)
self.view.addSubview(test)
setup()
}
func setup(){
ccview = ContactCircleController()
ccview.view.frame = CGRect(x: 0, y: 0, width: self.view.frame.width / 2, height: self.view.frame.width / 2)
ccview.edgesForExtendedLayout = UIRectEdge.top
self.view.addSubview(ccview.view)
}}
我已经取消选中了“Extend Edges” - 在故事板上切换导航控制器。我还将edgeForExtendedLayout = []添加到UIViewController,对于UIView,它工作得很好。但是对于另一个UIViewController的视图......它没有用。
谢谢!
答案 0 :(得分:0)
如果您使用调试视图层次结构,您会看到导航栏后面的灰色.exe
不,而是保持Start "" "%~dp0TeamViewer_Assignment.exe" "-apitoken 123-XXX" ""-datafile "C:\Program Files (x86)\TeamViewer\AssignmentData.json""" ""-devicealias "Computer"""
的高度。
这是因为从Storyboard实例化的ccview.view
的{{1}}默认情况下为self.view.frame.width / 2
,而.view
的{{1}}在没有情节提要的情况下实例化有一个默认的UIViewController
。
您可以将.autoresizingMask = []
更改为:
.view