2012-06-15 9 views
19

Ich weiß, dass ich die Zellen drehen und den Indikator bewegen kann, indem ich die Bildlaufansicht "auf dem Kopf" zeige, aber das erfordert viele andere Rotationen und die Manipulation von Informationen, damit die Tabelle richtig scrollt.ist es möglich, den UIScrollView-Indikator von rechts nach links zu verschieben?

Vielen Dank für die Zeit

+1

Dies sollte eine systemweite Einstellung sein, so dass linkshändige Benutzer Scrollbalken auf der rechten Seite haben, und Rechtshänder haben Scrollbalken auf der linken Seite. Das erzähle ich seit Jahren. – Cyrille

Antwort

70

Eigentlich ist es möglich, indem die scrollIndicatorInsets Eigenschaft Ändern der Anzeige auf einen kleinen Bereich auf der linken Seite zu beschränken:

tableView.scrollIndicatorInsets = UIEdgeInsetsMake(0,0,0,tableView.bounds.size.width-10); 
+1

Gut, aber es kommt darauf an, dass Ihre Konstante '10' der Breite der Bildlaufansicht entspricht ... technisch gesehen ist das eine unsichere Annahme, aber praktisch ist es machbar. – rickster

+0

Nur zur weiteren Erläuterung sollte 10 die Breite des Indikators selbst sein, nicht die Scroll-Ansicht. Ich denke, das ist es, was @Rickster sagen wollte. –

+0

Äh, richtig. Vielen Dank! – rickster

7

mag ich Jeremy Jay-Lösung (obwohl ich habe es nicht getestet), aber nur um die Idee gründlich zu erforschen ... hier ist eine weitere, die es wert wäre zu versuchen (obwohl sie auch noch nicht getestet wurde):

Verwenden Sie zwei Bildlaufansichten.

Eine Bildlaufansicht (wir nennen dies die "echte") enthält Ihren Inhalt, aber seine Anzeigen sind ausgeblendet. Eine andere Bildlaufansicht enthält keinen Inhalt, aber ihre contentSize entspricht der der "echten" Bildlaufansicht. Wenn sich die "echte" Bildlaufansicht contentOffset ändert (wie über Delegatennachrichten beobachtet), ändern Sie den Offset der "falschen" Bildlaufansicht so, dass er übereinstimmt. (Weitere Informationen über die Verwendung einer Bildlaufansicht ohne Inhaltsansicht finden Sie in der Übersicht der Bildlaufansichten von WWDC 2012.)

In der Theorie (ich habe dies noch nicht getestet) haben Sie jetzt eine Bildlaufanzeige Das ist getrennt von der ursprünglichen Bildlaufansicht und Sie können es in Bezug auf das Original beliebig platzieren. Lege es über das Original und verschiebe/grösse es so, dass es einen schmalen Streifen auf der linken Seite einnimmt und du einen Scroll-Indikator auf der linken Seite hast. (Alternativ können Sie es auf das Original legen und es horizontal mit einer affinen Transformation spiegeln.) Stellen Sie es ganz woanders hin, um Ihr UI auf eine Reise in die verrückte Stadt mitzunehmen. (Oder nicht.) Achten Sie darauf, dass Sie die Berührungen ignorieren, wenn sie oben liegen.

2

Ein schneller Weg, dies zu erreichen (wenn Sie keine Zeilenaktionen verwenden), ohne dass Sie mit zusätzlichen Tabellenansichten rechnen müssen, wäre, die Tabellenansicht über die Y-Achse zu transformieren (umzudrehen) und dann umzuwandeln die Zellen zurück, wenn Sie sie bekommen.

tableView.transform = CGAffineTransformMakeScale(1, -1); 

und dann

cell.transform = CGAffineTransformMakeScale(1, -1); 
Verwandte Themen