我是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
我只想让故事板反映我在代码中所做的更改,看起来就像模拟器一样。
答案 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。您可以根据需要找到代码的效果。
希望,这会对你有帮助。