2016-05-24 4 views
3

Ich verwende das Eureka-Framework und habe vor Kurzem Code hinzugefügt, um Rand-zu-Rand-Zelltrennzeichen zu ermöglichen. Damit müssen alle Formularelemente einen Rand definiert haben, andernfalls beginnen sie ganz links auf dem Bildschirm.So legen Sie Kopf- und Fußzeilenränder in Eureka fest, ohne benutzerdefinierte Klassen zu erstellen

Gibt es eine Möglichkeit, die linken/rechten Ränder der Sektion header/footer ähnlich einer Zelle anzupassen? Ich versuche zu vermeiden, benutzerdefinierte Klassen für jeden Abschnitt/Header-Titel zu verwenden.

Ich habe versucht, den Quellcode zu sehen, um zu sehen, wie die Ansicht erstellt wird, aber ich sehe nirgends, wo es die X-Koordinate oder links/rechts Ränder usw. definiert. Ich sehe auch keine Eigenschaften, die Ich könnte es schaffen, dies zu erreichen.

Jede Hilfe würde sehr geschätzt werden!

  +++ Section(){section in 
       var footer = HeaderFooterView<UITableViewHeaderFooterView>(.Class) 
       footer.onSetupView = {view, _, _ in 
        view.preservesSuperviewLayoutMargins = false 
        view.layoutMargins.left = 50 
        view.layoutMargins.right = 50 
        view.contentView.preservesSuperviewLayoutMargins = false 
        view.contentView.layoutMargins.top = 10 
        view.contentView.layoutMargins.left = 50 
        view.textLabel?.text = "This is a test footer message." 
        view.textLabel?.layoutMargins.top = 10 
        view.textLabel?.font = UIFont.preferredFontForTextStyle("Footnote") 
       } 
       section.header = HeaderFooterView<ALogoView>(HeaderFooterProvider.Class) 
       section.footer = footer 
       } 

Edit: Ich habe das oben versucht, aber es funktioniert nicht. Wenn Sie eine lange Zeichenfolge eingeben, wird sie in die Zeilen des übergeordneten Abschnitts verschoben.

Edit2: Ich habe kommen mit dem folgenden

class GenericHeader: UIView { 

override init(frame: CGRect) { 
    super.init(frame: frame) 
    self.preservesSuperviewLayoutMargins = false 
    let textView = UILabel() 
    textView.frame = CGRect(x: 0, y: 0, width: UIScreen.mainScreen().bounds.width - 30, height: 20) 
    textView.text = "This is a very very very long title, This is a very very very long title, This is a very very very long title, This is a very very very long title, This is a very very very long title, This is a very very very long title Let's add some more stuff here to see how it handles." 
    textView.numberOfLines = 0 
    textView.textAlignment = .Justified 
    textView.font = UIFont.preferredFontForTextStyle(UIFontTextStyleBody) 
    textView.textColor = UIColor(red:0.47, green:0.47, blue:0.49, alpha:1.0) 
    textView.frame = textView.bounds 
    textView.sizeToFit() 
    self.addSubview(textView) 
    //self.frame = CGRect(x: -15, y: -3, width: textView.bounds.width - 16, height: textView.bounds.height) 
    self.bounds = CGRect(x: -15, y: -3, width: textView.bounds.width - 16, height: textView.bounds.height) 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 
} 

Ich verwende in meiner Form:

+++ Section() { 
    $0.header = HeaderFooterView<GenericHeader>(HeaderFooterProvider.Class) 
    $0.footer = HeaderFooterView<GenericFooter>(HeaderFooterProvider.Class) 
} 

Wie kann ich entlang einer Zeichenfolge übergeben, wenn die Kopfzeile/Fußzeile Klassen werden instanziiert, so dass ich nicht eine Million verschiedene Klassen/Ansichten mit unterschiedlichem Text schreiben muss?

+0

Hallo, habe es erklärt hat funktioniert? Haben Sie ein Beispielbild, wie es aussieht? Appreciate es – VAAA

Antwort

0

Ich habe Tabelle Ansicht Zelle margings hinzugefügt von diesem n jede Zeile zu tun ....

TextRow.defaultCellSetup = { cell, row in 
    cell.preservesSuperviewLayoutMargins = false 
    cell.layoutMargins.left = 0 
    cell.contentView.preservesSuperviewLayoutMargins = false 
    cell.contentView.layoutMargins.left = 50 
} 

ButtonRow.defaultCellSetup = { cell, row in 
    cell.preservesSuperviewLayoutMargins = false 
    cell.layoutMargins.left = 0 
    cell.indentationLevel = 5 
} 

Schauen Sie in dieser Ausgabe, die ein wenig mehr ... https://github.com/xmartlabs/Eureka/issues/438

+0

Hallo, vielen Dank für Ihre Antwort. Ich bin eigentlich der Autor des GitHub-Threads und es gibt kein defaultCellSetup für Abschnittsüberschriften und Fußzeilen. Es verwendet eine andere Methode zum Rendern dieser UI-Elemente. Ich habe auf github ein neues Problem erstellt, da die .onSetupView keine Margin-Einstellungen zu übernehmen scheint. – Plastus

+0

Um den Kopf- und Fußzeilen des Bereichs Ränder hinzuzufügen, müssen Sie eine benutzerdefinierte Ansicht implementieren, die in diesem Readme-Abschnitt erläutert wird: https://github.com/xmartlabs/Eureka#section-header-and-footer – mtnBarreto

+0

Der obige Code wird eingerichtet Zeilenränder für den Fall, dass Standard-Tabellenansichts-Header Ihren Anforderungen entsprechen. Wenn Sie für die Abschnittsüberschrift mehr Anpassungen benötigen, sollten Sie benutzerdefinierte Ansichten verwenden. – mtnBarreto

Verwandte Themen