2017-06-22 2 views
0

Ich verwende einen statischen Table View Controller und definiere die Benutzeroberfläche in Interface Builder.Wie erreicht man dieses Layout im Interface Builder?

Ich möchte, dass alle UILabels die gleiche Breite haben, so dass die linke Seite der UITextFields ausgerichtet ist.

Wenn ich eine Breite erzwinge, dann überholen sie sich oft gegenseitig.

enter image description here

ich die UILabel Breite modifizieren programmatisch, basierend dachte an die Breite des „Safe Message“ in der Steuerung, aber ich konnte es nicht wieder Layout erhalten.

let width = labelSafeMessage.frame.size.width; 
labelName.frame.size.width = labelSafeMessage.frame.size.width; 
labelName.sizeToFit(); 
labelMessage.frame.size.width = labelSafeMessage.frame.size.width; 
labelMessage.sizeToFit(); 

Antwort

1

Sie können dies nur mit Interface Build tun, und Sie müssen nicht erzwingen, dass Beschriftungen die gleiche Größe haben. Sie müssen nur den führenden Abstand von UITextFields zur Superansicht festlegen und sie werden auf der linken Seite ausgerichtet .

+0

Das hat den Trick gemacht. Vielen Dank! –

0

Sie könnten das Neulayout vermeiden, indem Sie die Breite berechnen, bevor das TableView Daten anzeigt.

die größte Zeichenfolge in dem Satz, und dann diese für das Label

var str = "Hello, playground" 
let constraintRect = CGSize(width: CGFloat.greatestFiniteMagnitude, height: DEFINED_HEIGHT) 
let boundingBox = (str as? NSString)?.boundingRect(with: constraintRect, options: NSStringDrawingOptions.usesLineFragmentOrigin, attributes: [NSFontAttributeName: FONT], context: nil) 
boundingBox.width //width for the labels 

Ersetzen Sie einfach die DEFINED_HEIGHT mit der Höhe benutzen, die die Höhe der Zeile minus der oberen und unteren Auflagen gebunden sind, die sie halten . und der FONT, für die Schriftart in der Bezeichnung verwendet.

0

Anstelle einer UITableView können Sie eine vertikale UIStackView verwenden, die UIViews enthält.

Legen Sie Ihre UILabels Einschränkungen Align Leading edges und Align Trailing edges und die Content Hugging Priority und Content Compression Resistance Priority sowie gesetzt, wie das Etikett richtig wird nicht beschnitten und passen.

Setzen Sie die UITextFields Einschränkungen auf Align Leading edges und Align Trailing edges miteinander und das wird den Trick tun.

Verwandte Themen