2016-05-03 10 views
0

Ich habe ScrollView und in dieser Bildlaufansicht habe ich Tasten und eine Tabelle. Ich möchte die Positionsschaltflächen und die Größentabelle ändern, wenn mein Formular geladen wurde. Wenn die Tabelle beispielsweise aus 5 Zellen besteht, muss die Position der Schaltflächen bei 200 (y) geändert werden. Und Tabelle müssen hat height = height_table + 200.ändern Knopfposition in scrollview

Mein Code:

var yPosition: CGFloat = 0; 
var scrollViewContentSize: CGFloat = 505; 
var names = ["first","second","third","fourth","fifth"] 

override func viewDidAppear(animated: Bool) { 

    self.yPosition += 40 * CGFloat(names.count) 
    self.scrollViewContentSize += 40 * CGFloat(names.count) 
    self.scrlMain.contentSize = CGSize(width: 320,height: self.scrollViewContentSize) 

    let btnY1: CGFloat = 40 * CGFloat(names.count) + 467 
    btn1.frame.origin = CGPoint(x: 210, y: btnY1) 

    let btnY2: CGFloat = 44 * CGFloat(names.count) + 386 
    btn2.frame = CGRectMake(26, btnY2, 46, 30) 

    let btnY3: CGFloat = 44 * CGFloat(names.count) + 427 
    btn3.frame = CGRectMake(26, btnY3, 46, 30) 

    var framelb: CGRect = lb.frame 
    framelb.origin.y += 40 * CGFloat(names.count) 
    framelb.origin.x = 110 
    lb.frame = framelb 

    tableView.contentOffset.y += 40 * CGFloat(names.count) 
    tableView.contentSize = CGSize(width: 304, height: tableView.contentOffset.y) 
} 

Was habe ich falsch gemacht?

screen1

screen2

Ich versuchte func setControlsPosition, aber nichts geschah hinzuzufügen.

Code:

func setControlsPosition(){ 
tableView.contentOffset.y += 40 * CGFloat(names.count) 
tableView.contentSize = CGSize(width: 304, height: tableView.contentOffset.y) 

let lblY: CGFloat = tableView.frame.origin.y + tableView.frame.size.height+10 //10 for spacing between tableView and label 
lb.frame = CGRectMake(26, lblY, 46, 30) 

let btn1Y: CGFloat = lb.frame.origin.y + lb.frame.size.height + 10 // Spacing between label and button 
btn1Y.frame = CGRectMake(26, btn1Y, 46, 30) 
} 

//This is code work well 
    override func viewDidAppear(animated: Bool) { 

    self.yPosition += 40 * CGFloat(names.count) 
    self.scrollViewContentSize += 40 * CGFloat(names.count) 
    self.scrlMain.contentSize = CGSize(width: 320,height: self.scrollViewContentSize) 
//This function is performed, but nothing changes 
    setControlsPosition() 
} 

habe ich geprüft, names.count = 5 in der Funktion setControlsPosition. Das ist richtig.

+0

Sie haben eine Scrollansicht, und in diesem ScrollView eine TableView? –

+0

Kannst du es erklären? Sie haben einen Scrollview mit einer Tabelle (Scrollview) und einer Schaltfläche? Der erste Bildlauf ist horizontal? –

+0

Ich habe Scrollview und in dieser Scrollview gibt es Tabellenansicht und Schaltflächen. – Dim

Antwort

0

Sie können die vorherige Kontrolle als Referenz verwenden, um die Position anderer Steuer

override func viewDidAppear(animated: Bool) { 

    setControlsPosition() 

    self.scrollViewContentSize = button3.frame.origin.y + button3.frame.size.height + 10 
    self.scrlMain.contentSize = CGSize(width: 320,height: self.scrollViewContentSize) 
} 

func setControlsPosition(){ 
    tableView.contentOffset.y += 40 * CGFloat(names.count) 
    tableView.contentSize = CGSize(width: 304, height: tableView.contentOffset.y) 

    let lblY: CGFloat = tableView.frame.origin.y + tableView.frame.size.height+10 //10 for spacing between tableView and label 
    lb.frame = CGRectMake(26, lblY, 46, 30) 

    let btn1Y: CGFloat = lb.frame.origin.y + lb.frame.size.height + 10 // Spacing between label and button 
    btn1Y.frame = CGRectMake(26, btn1Y, 46, 30) 
} 

Bitte verstehen und dann umsetzen zu definieren.

Ähnlich können Sie für alle Ihre anderen Steuerelemente tun. Nachdem Sie alle anderen Steuerelemente festgelegt haben, können Sie die Inhaltsmenge des Scrolls entsprechend der Position des letzten Steuerelements definieren.

All dies kann mit Autolayout einfacher sein. Versuche das zu benutzen.

Hoffe, das kann Ihnen helfen

+0

Ich habe setControlsPosition() zu viewDidAppear hinzugefügt, aber nichts passiert. – Dim

+0

Debuggen Sie den Code und prüfen Sie, ob es nach Ihren Anforderungen funktioniert. Ich hatte gerade ein Beispiel gegeben oder sonst muss ich schauen, dass Sie kompletten Code –

+0

@Dim kommen, das für weitere Diskussion http://chat.stackoverflow.com/rooms/110895/mainting-controls –

Verwandte Themen