简体   繁体   English

快速改变uiviewcontroller的观点

[英]swift change uiviewcontroller's view

I create a new UIViewController , I don't use storyboard, this is my code. 我创建了一个新的UIViewController ,我不使用storyboard,这是我的代码。 I want to change my view frame, this not work for me, I had try to add on viewWillAppear , it's still not work, I know I can add a new UIView to do it. 我想改变我的视图框架,这对我不起作用,我曾尝试添加viewWillAppear ,它仍然不起作用,我知道我可以添加一个新的UIView来做到这一点。 Can I change my viewcontroller's view? 我可以更改viewcontroller的视图吗? Thanks your help. 谢谢你的帮助。

import UIKit

class NewDetailViewController: UIViewController {

    override func viewWillAppear(animated: Bool) {
        super.viewWillAppear(animated)

    }
    override func viewDidLoad() {
        super.viewDidLoad()

        let statusBarHeight: CGFloat = UIApplication.sharedApplication().statusBarFrame.height
        let navBarHeight             = self.navigationController?.navigationBar.frame.size.height

        println("statusBarHeight: \(statusBarHeight) navBarHeight: \(navBarHeight)")

        // view
        var x:CGFloat      = self.view.bounds.origin.x
        var y:CGFloat      = self.view.bounds.origin.y + statusBarHeight + CGFloat(navBarHeight!)
        var width:CGFloat  = self.view.bounds.width
        var height:CGFloat = self.view.bounds.height - statusBarHeight - CGFloat(navBarHeight!)
        var frame:CGRect   = CGRect(x: x, y: y, width: width, height: 100)

        println("x: \(x) y: \(y) width: \(width) height: \(height)")

        self.view.frame           = frame
        self.view.backgroundColor = UIColor.redColor()
    }

    override func didReceiveMemoryWarning() {
        super.didReceiveMemoryWarning()
    }
}

I found I add on viewDidLayoutSubviews , it work for me. 我发现我添加了viewDidLayoutSubviews ,它对我viewDidLayoutSubviews

override func viewDidLayoutSubviews() {
    let statusBarHeight: CGFloat = UIApplication.sharedApplication().statusBarFrame.height
    let navBarHeight             = self.navigationController?.navigationBar.frame.size.height

    println("statusBarHeight: \(statusBarHeight) navBarHeight: \(navBarHeight)")

    // view
    var x:CGFloat      = self.view.bounds.origin.x
    var y:CGFloat      = self.view.bounds.origin.y + statusBarHeight + CGFloat(navBarHeight!)
    var width:CGFloat  = self.view.bounds.width
    var height:CGFloat = self.view.bounds.height - statusBarHeight - CGFloat(navBarHeight!)
    var frame:CGRect   = CGRect(x: x, y: y, width: width, height: height)

    println("x: \(x) y: \(y) width: \(width) height: \(height)")

    self.view.frame           = frame
    self.view.backgroundColor = UIColor.redColor()
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM