2017-02-25 6 views
0

Ich habe eine Tabellenansicht, in der ich die uiscroll-Ansicht in ihrer Zeile anzeigen möchte. Ich habe Höhe des Tableview gesetzt, wie folgend:Inhalt für UIScrollview in UITableViewCell einstellen

func tableView(_ tableView: UITableView, heightForRowAt indexPath: IndexPath) -> CGFloat{ 
    let deviceFrame = UIScreen.main.bounds.size 
    print((1.21*deviceFrame.width)) 
    return (1.21*deviceFrame.width) 
} 

Jetzt habe ich eine benutzerdefinierte Tabellenansicht Zelle, Innerhalb dieser Tableview Zelle Ich versuche Seiten für UIScrollView hinzuzufügen, wie folgend:

func loadContent(){ 
    var xaxis = 0 
    var numOfPages = 0 
    let screenSize = UIScreen.main.bounds.size 
    for index in 1...3 { 
     let pagevw = CustomPageView(frame: CGRect(x: xaxis, y: 0, width: Int(scrlvw.frame.size.width), height: Int(scrlvw.frame.size.height-10))) 
     pagevw.translatesAutoresizingMaskIntoConstraints = true 
     scrlvw.addSubview(pagevw) 
     xaxis = xaxis + Int(screenSize.width) 
     numOfPages += 1 
    } 
    let content = CGSize(width: numOfPages * (Int(scrlvw.frame.height)), height: Int(scrlvw.frame.height-30)) 
    print("content") 
    print(content) 
    scrlvw.contentSize = CGSize(width: numOfPages * (Int(scrlvw.frame.height)), height: Int(scrlvw.frame.height-30)) 
    pagecontrol.numberOfPages = numOfPages 
} 

Nun, obwohl Zelle wird korrekt angezeigt, aber die Inhaltsgröße der Tabelle wird nicht korrekt aktualisiert. Wahrscheinlich verursacht Autolayout hier einige Probleme. Ich möchte zwar, dass das automatische Layout beibehalten wird, da ich viele Komponenten in meiner Seite habe. Kann mir hier jemand helfen?

Dank

+0

Nichts, was Sie hier gepostet haben, zeigt etwas im Zusammenhang mit der "Inhaltsgröße der Tabelle" ... Sie geben '(1.21 * deviceFrame.width)' als die Höhe für * jede * Zeile in Ihrer Tabelle - Sie Das heißt, Sie erstellen 12 Zeilen wie diese in Ihrer Tabelle, aber Ihre Tabelle scrollt nicht hoch und runter? – DonMag

+0

Ich meinte inhaltliche Größe der UIScrollView in der Tabellenzeile, Tabelle ist in Ordnung, aber scrollview bekommt wegen des automatischen Layouts nicht die richtige Inhaltsgröße. – pankaj

Antwort

0

Wenn Sie dynamisch Auto-Layout Inhalt zu einem UIScrollView hinzufügen, mögen Sie die richtigen Randbedingungen zu dem Subviews hinzuzufügen, anstatt den alten Stil mit jeder Subview der x der Einstellung, y, w, h und Berechnen Sie dann die ContentSize der ScrollView.

Dabei verwenden Sie Constraints nicht nur, um die "Seiten" (die eingebetteten Subviews) zu positionieren, sondern auch um die Seiten der Inhaltsgröße der scrollview zu verschieben.

Ich habe ein Beispiel für das Hinzufügen von Unteransichten zu einem horizontal scrollenden UIScrollView in einem vertikal scrollenden UIScrollView zusammengestellt. Es ist in Swift 2.2, aber es aktualisiert sich automatisch auf 3.0 ohne Probleme.

https://github.com/DonMag/SWAutoLayoutScrollView

Ich spielte mit verschiedenen Möglichkeiten, Einschränkungen zuweisen, von denen alle die gleiche Sache erreicht. Die "Arbeits" -Methoden sind immer noch in der Hauptansicht-Controller-Klasse.

Sie sollten in der Lage sein, diese Techniken zu replizieren, um Ihre Scroll-Bedürfnisse zu lösen.

Verwandte Themen