在编写了下面提到的代码之后,
//
// FirstCustomSegue.swift
// Prayer
//
// Created by Jae Hyun Kim on 8/9/15.
// Copyright (c) 2015 Jae Hyun Kim. All rights reserved.
//
import UIKit
class FirstCustomSegue: UIStoryboardSegue {
override func perform() {
var firstVCView = self.sourceViewController.view as UIView!
var secondVCView = self.destinationViewController.view as UIView!
let screenWidth = UIScreen.mainScreen().bounds.size.width
let screenHeight = UIScreen.mainScreen().bounds.size.height
secondVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight)
}
}我正在阅读的一篇教程中的一条语句说,“此时,第二个视图控制器的视图还不是应用程序窗口的子视图。因此,在实现实际动画之前,我们显然必须将其添加到窗口中。这将使用应用程序窗口对象的insertSubview( view :insertSubview:)方法来实现。接下来,您将看到,我们首先访问窗口对象,然后添加目标视图:”然后他将添加以下代码:
override func perform() {
...
// Access the app's key window and insert the destination view above the current (source) one.
let window = UIApplication.sharedApplication().keyWindow
window?.insertSubview(secondVCView, aboveSubview: firstVCView)
}然而,我不太清楚他的意思是什么,当他说“在这一点上,第二个视图控制器的观点不是一个subview...and之类的”这是什么意思?我会更具体地说明我的问题是什么声明,例如什么是“子视图”的含义。但我对这份声明的所有内容都很困惑。对不起:(
secondVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight),这句话是什么意思?
发布于 2015-08-09 21:41:22
视图层次结构是了解iOS用户界面的核心元素之一。基本上说,屏幕上的所有视图都是相互关联的--子视图、父视图、兄弟视图。
注意,对于不同的视图,视图可以同时是三个角色。如果viewA包含viewB和viewC,而viewB包含viewD,那么
viewA是viewB和viewC的超级视图viewB和viewC是viewA的子视图viewA和viewB是兄弟姐妹viewB是viewD的超级视图viewD是viewB的一个子视图viewB完成了这三个角色。屏幕上的所有内容都必须是视图层次结构的一部分,这样操作系统才能确定要呈现的位置。
视图层次结构的一个非常重要的事情是视图的相对定位。定位总是相对于ones。在同级视图和其父视图之间,可以设置布局约束(-> Autolayout)来管理它们的布局。
注意到,这是一个相当简短的概述,而且远不完美,我强烈建议您至少阅读一次关于 view hierarchy 的苹果文档。
关于你们的问题:
“在这一点上,第二个视图控制器的观点不是subview...and之类的”这是什么意思?
也就是说,视图并不是解释的层次结构的一部分。因此,操作系统还不知道在哪里放置它-实际上,它甚至不知道它应该呈现它。要解决这个问题,您必须在层次结构中的某个位置添加视图,方法是选择视图并将新视图添加为子视图。
secondVCView.frame = CGRectMake(0.0, screenHeight, screenWidth, screenHeight),这句话是什么意思?
该行将secondVCView框架的secondVCView属性设置为等于新创建的具有指定维度的CGRect。frame确定视图的位置和大小。理解该属性及其对应方对于理解视图及其层次结构是如何工作的同样重要。幸运的是,有this answer on SO很好地涵盖了这个主题。
https://stackoverflow.com/questions/31907863
复制相似问题