gpt4 book ai didi

ios - XIB 和容器 View 的自动高度

转载 作者:行者123 更新时间:2023-11-28 08:26:15 25 4
gpt4 key购买 nike

我正在尝试为我的 Storyboard构建可重用的 View ,让我们从 XIB 开始:

XIB TextField on Interface Builder

这个 View 包含一个 UITextField 和一个显示错误的标签,文件的所有者连接到这个类:

import Foundation
import UIKit

@IBDesignable
class TextField: UIView {

@IBOutlet weak var textField: UITextField!

@IBOutlet weak var errorLabel: UILabel!

@IBOutlet weak var errorLine: UIImageView!

var view: UIView!

func loadViewFromNib() -> UIView {
let bundle = Bundle(for: type(of: self))
let nib = UINib(nibName: "TextField", bundle: bundle)
let view = nib.instantiate(withOwner: self, options: nil)[0] as! UIView

return view
}

func xibSetup() {
view = loadViewFromNib()
view.frame = bounds
view.autoresizingMask = [UIViewAutoresizing.flexibleWidth, UIViewAutoresizing.flexibleHeight]
addSubview(view)
}

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

required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
xibSetup()
}

@IBInspectable var placeholder: String? {
didSet {
textField.placeholder = placeholder
}
}

@IBInspectable var isSecureTextEntry: Bool = false {
didSet {
textField.isSecureTextEntry = isSecureTextEntry
}
}

@IBInspectable var errorText: String? {
didSet {
errorLabel.text = errorText
}
}

func showError() {
errorLine.isHidden = false
errorLabel.isHidden = false
}

func hideError() {
errorLine.isHidden = true
errorLabel.isHidden = true
}
}

然后我在 Main.storyboard 上使用它作为 UIView,将类设置为 TextField:

enter image description here

这里的问题是我每次使用这个 TextField 类时都需要为高度添加一个约束,我尝试使用固有大小作为 Main.storyboard 上 UIView 的占位符(删除高度约束)但是在运行时与 XIB 的高度不同。

同样的问题发生在 View Controller 的容器 View 中,我遇到了这种情况:

enter image description here

如何使容器 View 与嵌入其中的 View Controller 高度相同? (作为测试,我将红色大 View Controller 的高度设置为 1500px 以查看它是否滚动,如果我对容器 View 的高度施加约束,则 ScrollView 的内容大小是正确的,但我想避免对高度的限制,我希望它是自动的)

在此先感谢您的帮助

最佳答案

我使用了我在此处描述的相同技术: https://medium.com/zenchef-tech-and-product/how-to-visualize-reusable-xibs-in-storyboards-using-ibdesignable-c0488c7f525d#.3c0javomy

确保 Xib 中的所有约束都定义了 View 的高度。当您在 Storyboard中使用它时,您不需要再次设置高度。但是,在呈现 View 之前,您会在 Storyboard中看到 IB 约束错误。

关于ios - XIB 和容器 View 的自动高度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39896805/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com