繁体   English   中英

在 Swift 中以编程方式创建 UITextView 时未获得输出

[英]Not Getting Output on Creating UITextView Programmatically in Swift

AppDelegate.swift

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

var window: UIWindow?


func application(application: UIApplication, didFinishLaunchingWithOptions launchOptions: [NSObject: AnyObject]?) -> Bool {
    // Override point for customization after application launch.
    return true
}

}

视图控制器.swift

import UIKit

class ViewController: UIViewController {


override func loadView()
{
    self.view = UIViewUsingTextField()
}

override func viewDidLoad() {
    super.viewDidLoad()
    // Do any additional setup after loading the view, typically from a nib.
}

override func didReceiveMemoryWarning() {
    super.didReceiveMemoryWarning()
    // Dispose of any resources that can be recreated.
}
}

UIViewUsingTextField.swift

import UIKit

class UIViewUsingTextField: UIView
{

var blueview: UIView?

 init() {
    super.init(frame: CGRectZero)
    self.backgroundColor = UIColor.whiteColor()
    self.setupView()

}

required init(coder aDecoder: NSCoder) {
    fatalError("init(coder:) has not been implemented")
}

override init(frame: CGRect) {
    super.init(frame: frame)
}

  func setupView()
   {
    self.blueview = UIView()
    self.blueview?.backgroundColor = UIColor.blueColor()
    self.blueview?.translatesAutoresizingMaskIntoConstraints = false
    addSubview(self.blueview!)

    let centerXconstraint = NSLayoutConstraint(item: self.blueview!, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, constant: 0)

    let centerYconstraint = NSLayoutConstraint(item: self.blueview!, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0)

    self.addConstraint(centerXconstraint)
    self.addConstraint(centerYconstraint)

   let widthConstraint = NSLayoutConstraint(item: self.blueview!, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 200)

   let heightConstraint = NSLayoutConstraint(item: self.blueview!, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 200)

    self.addConstraint(widthConstraint)
    self.addConstraint(heightConstraint)

    self.addConstraints([centerXconstraint,centerYconstraint,widthConstraint,heightConstraint])
}

/*
// Only override drawRect: if you perform custom drawing.
// An empty implementation adversely affects performance during animation.
override func drawRect(rect: CGRect) {
    // Drawing code
}
*/

}

通过使用上面的代码,我不能在模拟器中获得蓝色的 UITextView。 我想以编程方式创建 UITextview,我找不到为什么我没有将 Blue UITextView 作为此代码的输出的实际问题。 我的模拟器中只有白色屏幕作为此代码的输出。 我已尝试按照链接进行编码。 有没有人请帮我解决这个问题以获得所需的输出。

将自定义类设置为View

查看班级

下面的代码将在视图的中心添加一个 200x200 的blueView

import UIKit

class UIViewUsingTextField: UIView
{

    var blueView : UIView?

    required init?(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented")
    }

    override init(frame: CGRect) {
        super.init(frame: frame)
        self.backgroundColor = UIColor.whiteColor()
        setupView()

    }

    func setupView() {
        self.blueView = UIView()
        self.blueView?.backgroundColor = UIColor.blueColor()
        self.blueView?.translatesAutoresizingMaskIntoConstraints = false

        self.addSubview(self.blueView!)

        let blueViewCenterXConstraint = NSLayoutConstraint(item: self.blueView!, attribute: NSLayoutAttribute.CenterX, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterX, multiplier: 1.0, constant: 0)

        let blueViewCenterYConstraint = NSLayoutConstraint(item: self.blueView!, attribute: NSLayoutAttribute.CenterY, relatedBy: NSLayoutRelation.Equal, toItem: self, attribute: NSLayoutAttribute.CenterY, multiplier: 1.0, constant: 0)

        let blueViewWidthConstraint = NSLayoutConstraint(item: self.blueView!, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 200)

        let blueViewHeightConstraint = NSLayoutConstraint(item: self.blueView!, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1.0, constant: 200)

        self.addConstraints([blueViewCenterXConstraint,blueViewCenterYConstraint,blueViewWidthConstraint,blueViewHeightConstraint])
    }
}

如果您希望 blueView 覆盖整个 View:

func setupView() {
    self.blueView = UIView()
    self.blueView?.backgroundColor = UIColor.blueColor()
    self.blueView?.translatesAutoresizingMaskIntoConstraints = false

    self.addSubview(self.blueView!)


    let constLeading = NSLayoutConstraint(item: self.blueView!,
                                          attribute: NSLayoutAttribute.Leading,
                                          relatedBy: .Equal,
                                          toItem: self,
                                          attribute: NSLayoutAttribute.Leading,
                                          multiplier: 1,
                                          constant: 0)
    self.addConstraint(constLeading)

    let constTrailing = NSLayoutConstraint(item: self.blueView!,
                                           attribute: NSLayoutAttribute.Trailing,
                                           relatedBy: .Equal,
                                           toItem: self,
                                           attribute: NSLayoutAttribute.Trailing,
                                           multiplier: 1,
                                           constant: 0)
    self.addConstraint(constTrailing)

    let constTop = NSLayoutConstraint(item: self.blueView!,
                                      attribute: NSLayoutAttribute.Top,
                                      relatedBy: .Equal,
                                      toItem: self,
                                      attribute: NSLayoutAttribute.TopMargin,
                                      multiplier: 1,
                                      constant: 0)
    self.addConstraint(constTop)

    let consBottom = NSLayoutConstraint(item: self.blueView!,
                                        attribute: NSLayoutAttribute.Bottom,
                                        relatedBy: .Equal,
                                        toItem: self,
                                        attribute: NSLayoutAttribute.BottomMargin,
                                        multiplier: 1,
                                        constant: 0)
    self.addConstraint(consBottom)
}

在您的视图中添加一个框架并禁用 translatesAutoresizingMaskIntoConstraints 将使它为您工作。

self.blueview?.frame = CGRectMake(0, 0, 200, 200)
 // self.blueview?.translatesAutoresizingMaskIntoConstraints = false

暂无
暂无

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

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