Swift - 查看层次结构

时间:2017-07-22 18:10:55

标签: ios swift autolayout

我正试图在另一个人面前展示一个观点。视图被隐藏,点击按钮时将显示。这是我的层次结构:

enter image description here

我需要带来的视图是信息视图

我试过这样做:

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被隐藏,点击后变得可见。 我正在尝试将它显示在标题前面(这不是导航控制器而是自定义视图)。见图:

the nib File

the view when is showed

the view if i scroll down

1 个答案:

答案 0 :(得分:0)

右键单击故事板中层次结构中的UIButton,以确定您的按钮是否具有可靠的连接。很多时候,当人们遇到困难时就是这种情况。您可能必须将故事板中的按钮重新连接到代码。您不必为此更改z-index。第一行代码应该可以工作,具体取决于您将代码放在文件中的位置..