Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/swift/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何使推入UINavigationViewController的视图正确调整大小?_Ios_Swift - Fatal编程技术网

Ios 如何使推入UINavigationViewController的视图正确调整大小?

Ios 如何使推入UINavigationViewController的视图正确调整大小?,ios,swift,Ios,Swift,我正在尝试以编程方式创建视图控制器层次结构(没有IB和故事板)。如果我使用普通的UIViewController,情况会很好: // My app delegate func application(application: UIApplication, didFinishLaunchingWithOptions options: [NSObject: AnyObject]?) -> Bool { self.window = UIWindow(frame: UIScreen.mai

我正在尝试以编程方式创建视图控制器层次结构(没有IB和故事板)。如果我使用普通的
UIViewController
,情况会很好:

// My app delegate
func application(application: UIApplication, didFinishLaunchingWithOptions options: [NSObject: AnyObject]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    let vc = UIViewController(nibName: nil, bundle: nil)
    vc.view = UIView(frame: CGRectZero)
    vc.view.backgroundColor = UIColor.whiteColor()
    let label = UILabel(frame: CGRectMake(0, 0, 100, 40))
    label.text = "Hello!"
    vc.view.addSubview(label)
    vc.title = "Title"

    self.window.rootViewController = vc
    self.window.makeKeyAndVisible()
    return true
}
然后我尝试将视图控制器放入导航控制器中:

func application(application: UIApplication, didFinishLaunchingWithOptions options: [NSObject: AnyObject]?) -> Bool {
    self.window = UIWindow(frame: UIScreen.mainScreen().bounds)

    // vc created the same way as above.

    let nav = UINavigationController(rootViewController: vc)
    self.window.rootViewController = nav

    self.window.makeKeyAndVisible()
    return true
}
标签隐藏在导航栏下


因此,导航视图控制器显然没有正确调整视图的大小。我尝试设置内部vc的框架,但没有效果,可能是因为事情是由autolayout处理的?我应该添加一些约束以使其像IB/Storyboard中那样正常工作,还是应该做一些不同的事情?

您的视图正在正确调整大小,但在iOS 8中,由于条形图可以是半透明的,因此默认情况下视图会延伸到它们下面。(这就是导航栏隐藏标签的原因)

据我所知,你想使用一个半透明的酒吧,但你不希望你的内容结束在他们下面。要完成此操作,可以编辑视图控制器的edgesForExtendedLayout属性

vc.edgesForExtendedLayout = UIRectEdgeNone
此属性告诉您应该在半透明条(左、右、上、下、全部、无或它们的任意组合)下延伸哪些边,并默认为UIRectEdgeAll


欲了解更多信息,请查看和此。

可能的副本应为
uirectredge。Swift中无
,我同意这是一个副本,但我接受这一点。谢谢很抱歉,我仍然在编写objective c代码,我没有注意到。谢谢你接受它!:)