2013-08-16 9 views
12

Tak, mam kilka UILabeli i UITextViews w komórce. Mój stół przewijał się nieco wolniej i wypróbowałem narzędzie "Kolory mieszania warstw" dostępne w symulatorze iOS i Instrumentach. Na czerwono widać warstwy, które się mieszają i spowalniają przewijanie.UITextView z białym tłem pokazującym jako mieszaną warstwę kolorów w instrumentach i symulatorze

Wszystkie elementy zostały wymieszane, więc umieściłem białe tło w UILabelach (takich samych jak komórka), a teraz UILabele są w porządku (wcześniej miały przezroczysty kolor jako tło).

Zrobiłem to samo z UITextViews, wybrałem białe tło, ale wciąż są wyświetlane na ekranie jako mieszanie warstw (w kolorze czerwonym).

Każda konfiguracja UITextView jest wykonywana w programie budującym interfejs, próbowałem przy każdej opcji, ale nadal są wyświetlane na czerwono.

Co muszę zrobić dla UITextViews, aby ich warstwy się nie mieszały?

Z góry dziękuję!

PD: Przepraszam, ale nie mogę zawierać zrzuty

Odpowiedz

7

Cóż, UITextView jest bardziej zaawansowany widok to przewijane i wspiera niestandardowe formatowanie tekstu, więc nie może być w stanie dostać się do „nie mieszać”. Przy innych widokach należy zaznaczyć pole wyboru opaque, ale wątpię, czy to zadziała w takim przypadku.

Najlepiej byłoby użyć UILabel zamiast tego. Można go zastąpić UITextView, gdy użytkownik musi edytować pole, ale korzystanie z UILabel podczas przewijania powinno znacznie poprawić prędkość.

+0

To co zrobiłem, zastąpiłem każdy UITextView z UILabel i teraz zwoje działają poprawnie :) Dzięki! – saky

+0

Ale UILabel nie obsługuje zdarzeń dotyku adresu URL. –

17

Również borykałem się z tym problemem. Mam UITableView, który przewijał się dobrze na iPhonie, ale po prostu zaszalał jak szalony na iPadzie. Włączyłem Color blending layers w Instruments i, jak powiedziałeś, wygląda na to, że opaque = YES; i backgroundColor = [UIColor whiteColor]; nie mają żadnego efektu.

Bob też jest poprawny, UILabele są bardziej wydajne. Jednak moja implementacja opiera się na ścieżkach wykluczeń, które są dostępne tylko w UITextView z powodu odsłoniętego stosu TextKit. Nie mogłem po prostu użyć UILabel więc z rozpaczy próbowałem tego i czerwonego na moich UITextViews zniknął:

for (UIView *subview in textView.subviews) { 
    subview.backgroundColor = theme.post.backgroundColor; 
} 

wiem, że to jest stare pytanie, ale spędziłem większą część dnia debugowania to. Mam nadzieję, że inni ludzie uznają to za przydatne.

+0

Gdzie to umieścisz? –

+1

Powoduje to usunięcie warstwy mieszanej z mojego widoku tekstowego. Dodałem tę pętlę do mojego inicjalizatora. –

Powiązane problemy