我正试图在另一个人面前展示一个观点。视图被隐藏,点击按钮时将显示。这是我的层次结构:
我需要带来的视图是信息视图
我试过这样做:
infoView.superview?.bringSubview(toFront: infoView)
但它不起作用 我试过z索引
infoView.layer.zPosition = 100
但也没有工作......
有什么想法吗?
更新: 这是按钮的代码:
@IBOutlet var infoButtons: [UIButton]!
@IBAction func infoButtonPressed(_ sender: UIButton) {if sender.tag == 8 {
if constraint.count > 0 {
NSLayoutConstraint.deactivate(constraint)
constraint.removeAll()
}
let alignYConstraint = NSLayoutConstraint(item: infoView, attribute: .centerY, relatedBy: .equal, toItem: infoButtons[7], attribute: .centerY, multiplier: 1.0, constant: 0)
NSLayoutConstraint.activate([alignYConstraint])
constraint.append(alignYConstraint)
self.infoView.textView.scrollRangeToVisible(NSMakeRange(0, 0))
infoView.isHidden = false
infoView.superview?.bringSubview(toFront: infoView)
}
更新:
我有一个添加到infiView的nib文件 这是Xib的代码:
import UIKit
class InfoView: UIView {
@IBOutlet var contentView: UIView!
@IBOutlet weak var textView: UITextView!
var onClickCallback: (() -> Void)?
override init(frame: CGRect) {
super.init(frame: frame)
commonInit()
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
commonInit()
}
private func commonInit() {
Bundle.main.loadNibNamed("InfoView", owner: self, options: nil)
addSubview(contentView)
contentView.frame = self.bounds
contentView.autoresizingMask = [.flexibleHeight, .flexibleWidth]
textView.backgroundColor = UIColor.clear
}
@IBAction func closeInfoViewPressed(_ sender: Any) {
onClickCallback?()
}
}
在另一个VC中,我添加一个视图并为其分配InfoView类。 infoView被隐藏,点击后变得可见。 我正在尝试将它显示在标题前面(这不是导航控制器而是自定义视图)。见图:
答案 0 :(得分:0)
右键单击故事板中层次结构中的UIButton,以确定您的按钮是否具有可靠的连接。很多时候,当人们遇到困难时就是这种情况。您可能必须将故事板中的按钮重新连接到代码。您不必为此更改z-index。第一行代码应该可以工作,具体取决于您将代码放在文件中的位置..