Mein UIView des stapeln wie so übereinander up:Welche Einschränkungen würden verhindern, dass meine UIViews übereinander gestapelt werden?
Jeder UIView ist in einem wordContainer
. Jeder UIView hat zwei UILabel
‚s in der es
schaffe ich jedes einzelne UIView mit zwei Kind UILabel ist wie so:
var labels = [UIView]()
for word in words {
let wordLabel = UILabel(frame: CGRectZero)
wordLabel.text = word.valueForKey("sanskrit") as? String
wordLabel.numberOfLines = 0
wordLabel.sizeToFit()
wordLabel.translatesAutoresizingMaskIntoConstraints = false
let englishWordLabel = UILabel(frame: CGRectMake(wordLabel.frame.width + 10,0,0,0))
englishWordLabel.text = word.valueForKey("english") as? String)
englishWordLabel.numberOfLines = 0
englishWordLabel.sizeToFit()
englishWordLabel.lineBreakMode = .ByWordWrapping
englishWordLabel.translatesAutoresizingMaskIntoConstraints = false
let wordView = UIView(frame: CGRectMake(0,0,self.view.frame.width,englishWordLabel.frame.height))
wordView.translatesAutoresizingMaskIntoConstraints = false
wordView.addSubview(wordLabel)
wordView.addSubview(englishWordLabel)
wordView.sizeToFit()
labels.append(wordView)
}
Dann nehme ich diese Sammlung von UIView ist und fügen Sie sie in meine wordContainer
. Dies ist der Teil, wo ich mir vorstelle, ich sollte NSLayoutConstraints setzen. Die Idee ist, dass ich möchte, dass sie alle richtig übereinander liegen. Zum Beispiel sollte es so aussehen:
word: definition
word: definition
word: definition
word: definition
Aber stattdessen sieht es wie folgt aus:
Ich füge sie in die wordContainer
wie so:
let wordContainer = UIView(frame: CGRectZero)
var currentY:CGFloat = 0.0
let margin_height:CGFloat = 4.0
var height:CGFloat = 0
for view in wordViews {
var rect = view.frame
rect.origin.y = currentY
view.frame = rect
currentY += view.frame.height
height += view.frame.height
wordContainer.addSubview(view)
}
let containRect = CGRectMake(0,0,self.view.frame.width, height)
wordContainer.frame = containRect
Und dann Ich setze meine Beschränkungen für die wordContainer
, die wirksam den Raum für alle Wörter ermöglicht, wenn sie nicht auf eac gestapelt wurden h andere:
wordContainer.bottomAnchor.constraintEqualToAnchor(cell.contentView.bottomAnchor).active = true
wordContainer.topAnchor.constraintEqualToAnchor(cell.contentView.topAnchor).active = true
Meine neueste Idee ist, dass ich vielleicht Einschränkungen hinzufügen sollte. Ich habe experimentiert mit NSLayoutConstraints
auf die Höhe der cell
, und wenn ich alle Wörter nicht mehr richtig ausgelegt sind. Stattdessen sind sie übereinander gestapelt. Aber das scheint die richtige Richtung zu sein.
Sie können 'UITableViewAutomaticDimension' nicht verwenden, ohne das automatische Layout zu verwenden – dan
@dan von autolayout, beziehen Sie sich auf IB Visual? – Trip
Mit Auto-Layout bedeutet das Hinzufügen von Einschränkungen zu den Ansichten.Sie sollten wirklich ein "UIStackView" dafür verwenden, anstatt zu versuchen, Ihre Ansichten manuell mit Einstellungsrahmen zu stapeln. – dan