2017-04-27 3 views
2

Ich habe zwei Unteransichten in Scrollview. Ich muss diese beiden Untersichten programmatisch positionieren. Ich habe es richtig gemacht, indem ich Code innerhalb DispatchQueue.main.async schrieb. Hier ist der Code:iOS Swift Einstellung Frame-Position programmatisch anzeigen

DispatchQueue.main.async 
{ 
    self.SelectClientDetailView.frame = CGRect(x: 0, y: 637, width: self.SelectClientDetailView.frame.size.width, height: self.SelectClientDetailView.frame.size.height) 
    self.SelectClientDetailView2.frame = CGRect(x: 0, y: 837, width: self.SelectClientDetailView2.frame.size.width, height: self.SelectClientDetailView2.frame.size.height) 
} 

Seiner Arbeit gut, aber wenn ich meine Scrollview Scrollen diese beiden Ansichten gesetzt zurück zu alten Positionen. Wie man es repariert. Seine Standard y Position wird SelectClientDetailView: 400 und SelectClientDetailView2: 600

+0

Sind Sie sicher, dass Sie die Ansichten zur scrollView hinzufügen und nicht zur Ansicht? – 7to4

+0

@ 7to4 ya beide Ansichten sind im Inneren scrollview –

Antwort

3

Wenn Sie nur die frame Y-Position ändern möchten, versuchen Sie stattdessen:

self.SelectClientDetailView.frame.origin.y = 637 
self.SelectClientDetailView.frame.origin.y = 837 

Wie bereits erwähnt, müssen Sie möglicherweise Ihre überprüfen Ansichtshierarchie, um sicher zu sein, dass Sie sie tatsächlich zur UIScrollView hinzufügen (und nicht woanders).

+0

Es funktioniert, aber wenn ich scrollen meine scrollview beide Ansicht sind zurück zur alten Position –

+0

@KavinKumarArumugam Wo fährst du den Frame-Einstellungscode in Ihrer Frage? –

+0

Innerhalb 'viewDidAppear' –

4

Wenn Sie Auto-Layout verwenden, wird die Einstellung Frame einige seltsame Effekte verursachen. Auto-Layout und Frames gehören nicht zusammen. Sie müssen die Beschränkungen neu anordnen, nicht die Rahmen. Wenn Sie das automatische Layout ändern, werden die Rahmen einige seltsame Effekte verursachen und irgendwann zu den Einschränkungen zurückkehren, die Sie in der ursprünglichen UIView erstellt haben.

Einige Lösungen:

  1. Wenn Sie wollen, dann Automatische Anordnung Ansatz verwenden, benötigen Sie einen Ausgang zu schaffen, um die jeweils genau wie Sie beschränken auf einen Blick würde und seine konstant verändern, wenn nötig.
  2. Deaktivieren Sie Auto-Layout in diesem speziellen XIB und starten Sie die Wiedergabe mit Frames.
+0

Gut zu wissen Dies :) – 7to4

Verwandte Themen