gpt4 book ai didi

ios - 如何正确调整通用应用程序在整个项目中使用的 UIView 的大小?

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

我正在尝试创建一个错误消息 View “网络连接不良时类似于 Facebook 应用程序”,该 View 可以在项目中的所有 View Controller 中使用。所以我创建了一个带有标签(错误消息)和关闭按钮的 .xib 文件。

这是管理 UIView 的类:

class ErrorMessageView: UIView {

@IBOutlet var contentView: UIView!
@IBOutlet var messageLabel: UILabel!

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

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

private func commonInit() {
NSBundle.mainBundle().loadNibNamed("ErrorMessageView", owner: self, options: nil)
guard let content = contentView else { return }
content.frame = self.frame
self.addSubview(content)
}

@IBAction func cancelAction(sender: UIButton) {
self.hidden = true
}

class func setupErrorView(tableView: UITableView) -> ErrorMessageView {

// Initialize an Error Message View
let errorMessageView = ErrorMessageView()
tableView.addSubview(errorMessageView)

// Setup its constraints
errorMessageView.translatesAutoresizingMaskIntoConstraints = false

let topConstraint = NSLayoutConstraint(item: tableView, attribute: .Top, relatedBy: .Equal, toItem: errorMessageView, attribute: .Top, multiplier: 1.0, constant: 0.0)
tableView.addConstraint(topConstraint)

let widthConstraint = NSLayoutConstraint(item: tableView, attribute: .Width, relatedBy: .Equal, toItem: errorMessageView, attribute: .Width, multiplier: 1.0, constant: 0.0)
tableView.addConstraint(widthConstraint)

let heightConstraint = NSLayoutConstraint(item: errorMessageView, attribute: .Height, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1.0, constant: 44.0)
errorMessageView.addConstraint(heightConstraint)

errorMessageView.hidden = true

return errorMessageView
}
}

在每个可能存在网络连接错误的 View Controller 中调用最后一个类函数,如果发生错误,我只显示 ErrorMessageView

它在 iPhone 和 iPad 的所有方向上都按预期完美放置 - 但在 iPhone 上我遇到复杂的约束错误(尽管 View 在模拟器中显示正常!)。这就是我遇到的错误!

(
"<NSAutoresizingMaskLayoutConstraint:0x7fccda9bd6e0 h=-&- v=-&- UIView:0x7fccda9b6da0.width == Arti.ErrorMessageView:0x7fccda9b4b70.width>",
"<NSLayoutConstraint:0x7fccda9b7590 UILabel:0x7fccda9b6f10'TEST ERROR MESSAGE VIEW'.leading == UIView:0x7fccda9b6da0.leadingMargin>",
"<NSLayoutConstraint:0x7fccda9b7680 H:[UILabel:0x7fccda9b6f10'TEST ERROR MESSAGE VIEW']-(NSSpace(8))-[UIButton:0x7fccda9b67a0]>",
"<NSLayoutConstraint:0x7fccda9b76d0 H:[UIButton:0x7fccda9b67a0]-(NSSpace(20))-| (Names: '|':UIView:0x7fccda9b6da0 )>",
"<NSLayoutConstraint:0x7fccda9aaca0 UITableView:0x7fccd890e400.leading == UIView:0x7fccda9aa180.leading>",
"<NSLayoutConstraint:0x7fccda9aad40 UITableView:0x7fccd890e400.trailing == UIView:0x7fccda9aa010.trailing>",
"<NSLayoutConstraint:0x7fccda9aade0 H:|-(0)-[UITableView:0x7fccd890e400] (Names: '|':UIView:0x7fccda9a9ea0 )>",
"<NSLayoutConstraint:0x7fccda9aae30 UIView:0x7fccda9aa180.width == UIView:0x7fccda9aa010.width>",
"<NSLayoutConstraint:0x7fccda9aae80 H:[UIView:0x7fccda9aa180]-(NSSpace(8))-[UIView:0x7fccda9a60e0]>",
"<NSLayoutConstraint:0x7fccda9aaf20 UIView:0x7fccda9a60e0.centerX == UIView:0x7fccda9a9ea0.centerX>",
"<NSLayoutConstraint:0x7fccda9ab150 H:[UIView:0x7fccda9a60e0]-(NSSpace(8))-[UIView:0x7fccda9aa010]>",
"<NSLayoutConstraint:0x7fccda9ba8c0 UITableView:0x7fccd890e400.width == Arti.ErrorMessageView:0x7fccda9b4b70.width>",
"<NSLayoutConstraint:0x7fccda9bf9a0 'UIView-Encapsulated-Layout-Width' H:[UIView:0x7fccda9a9ea0(0)]>"

)

最佳答案

根据您的描述和日志,我会说您的 View 比您将其放入的 UITableView 更宽。这可能就是为什么您只在较窄的 iPhone 屏幕上收到错误消息的原因。

要测试是否是这种情况,请将您的 xib 宽度更改为您可以在应用程序中显示此 View 的最小尺寸,并检查您的约束是否正常。

关于ios - 如何正确调整通用应用程序在整个项目中使用的 UIView 的大小?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34456129/

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