Ich versuche einen Blick vor einen anderen zu bringen. Die Ansicht ist ausgeblendet und wird beim Tippen auf eine Schaltfläche angezeigt. Dies ist die Hierarchie ich habe:Swift - Hierarchie anzeigen
Die Ansicht, die ich vor mitbringen müssen ist die Info-Ansicht
ich versucht habe zu tun, so:
infoView.superview?.bringSubview(toFront: infoView)
aber es didn ‚t arbeiten ich habe versucht, mit dem z-Index
infoView.layer.zPosition = 100
aber hat auch nicht funktioniert ...
Irgendwelche Idee?
Update: hier ist der Code der Taste, die funktioniert:
@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)
}
UPDATE:
ich eine Nib-Datei haben, die hier zum infiView hinzugefügt wird, ist der Code für die 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?()
}
}
In der anderen VC ich eine Ansicht hinzufügen und es die Klasse InfoView zuweisen. InfoView ist versteckt und beim Klicken wird sichtbar. Ich versuche, es vor dem Header zu bringen, wenn angezeigt wird (das ist kein Nav-Controller, sondern eine benutzerdefinierte Ansicht). Siehe Bild:
Offen gesagt, es sieht so aus, als ob Ihr 'bringSubview (toFront:)' funktionieren sollte. Sind Sie sicher, dass die Codezeile verarbeitet wird? Ich gehe davon aus, dass Sie überprüft haben, dass Ihre 'UIButton' IBAction korrekt funktioniert. – dfd
@dfd yeah Ich bin sicher, dass der Button auch andere Aktionen ausführt, die korrekt ausgeführt werden. – Marco
Wenn Sie sich die Eigenschaften von infoView ansehen, nachdem Sie die Darstellung von bowsubview vorgenommen haben, was für Rahmen und Grenzen und Sichtbarkeit? – solenoid