xcode:storyboard不反映ViewController.swift中代码所做的更改

时间:2017-07-09 17:07:36

标签: ios iphone swift xcode uiviewcontroller

我是iOS开发的新手。

当我在ViewController.swift文件(UITextField或UILable等)中创建任何内容时,它不会显示在main.storyboard(或故事板预览)上

this is what the storyboard looks next to the simulation

模拟正是我想要的样子,但它与故事板完全不同

我使用AutoLayout创建了一个UITextField,我已经通过代码中的outlet连接它并编辑它看起来像这样:

the code in ViewController.swift

我只想让故事板反映我在代码中所做的更改,看起来就像模拟器一样。

2 个答案:

答案 0 :(得分:2)

每次加载时,故事板都不会运行VC代码,因此无法使用VC编写的代码对故事板产生影响。

可以做的是制作自定义视图。

在这种情况下,您希望文本字段在故事板上看起来不同,因此请尝试创建UITextField子类。如果您然后将故事板中的文本字段的自定义类设置为自定义子类,它将按您希望的方式显示。

以下是您的工作方式:

@IBDesignable // this is important as it tells IB that it should draw this view in the storyboard
class MyTextField: UITextField {
    override func draw(in rect: CGRect) {
        // configure how you want the text field to look here...
    }
}

答案 1 :(得分:0)

Storyboard不会反映开发模式的变化,只会在运行时反映。

您可以创建自定义UITextField类,而不是在UIViewController类中编写代码。这是代码: -

导入UIKit

class NameField:UITextField {

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

    self.backgroundColor = UIColor.clear
    self.placeholder = "Enter text here"
    self.font = UIFont.systemFont(ofSize: 15)
    self.borderStyle = .roundedRect
    self.autocorrectionType = .no
    self.keyboardType = .default
    self.returnKeyType = .default
    self.clearButtonMode = .whileEditing
    self.contentVerticalAlignment = .center
    self.borderStyle = .none


    // Set UITextField Border Layer

    let layer = CALayer()
    let width = CGFloat(2.0)
    layer.borderColor = UIColor.darkGray.cgColor
    layer.frame = CGRect.init(x: 0, y: self.frame.height-width, width: self.frame.width, height: self.frame.height)

    layer.borderWidth = width
    self.layer.masksToBounds = true
    self.layer.addSublayer(layer)

}

}

有一次,您创建了一个自定义的UITextField类,然后在storyboard中为UITextFiled分配它的名称并运行Application。您可以根据需要找到代码的效果。

enter image description here

希望,这会对你有帮助。