2012-07-04 10 views
13

Mój zwój ma kilka widoków: cornerRadius = 10.0 i masksToBounds = YES.jaki jest związek między masksToBounds i cornerRadius?

Powoduje to problemy z wydajnością podczas przewijania mojego widoku przewijania. Chociaż próbowałem ustawić każdy widok shouldRasterize został ustawiony YES, problem nie został rozwiązany.

Jednak znam rozwiązanie tego problemu. Tak ustawiono NO. (masksToBound's wartość domyślna to NIE) Chociaż masksToBound to NO, narożniki moich widoków nadal mają krzywą, a problem z wydajnością również został rozwiązany.

Chcę wiedzieć o relacji między cornerRadius i masksToBounds. Obawiam się nieoczekiwanych problemów z tym ustawieniem.

Dziękuję.

Odpowiedz

23

Po podaniu cornerRadius, który określa promień używany do rysowania zaokrąglonych rogów tła odbiorcy.

Teraz zależy od masksToBounds, która określa, czy podwarstwy są przycinane do granic odbiornika. Więc jeśli jest ustawiony na YES, niejawna maska ​​pasująca do granic warstwy jest nakładana na warstwę, łącznie z efektami właściwości cornerRadius. Jeśli jest ustawione na YES i określona jest właściwość maski, dwie maski są mnożone, aby uzyskać rzeczywiste wartości maski.

Na przykład:

Jeśli ustawisz że na CALayer z treścią obrazu, nadal będzie sporządzony poza granicami promienia rogu. Możesz rozwiązać ten problem, ustawiając sublayer.masksToBounds na YES; ale jeśli to zrobisz, cienie się nie pokażą, ponieważ zostaną zamaskowane!

-2

Nie ma żadnego konkretnego statku relacji. W rzeczywistości, gdy wywołasz Promień Narożnika, przycina on widok, w którym promieniu minąłeś i MaskToBound: Tak, uczyń go przezroczystym dla tej części, która została przycięta, ponieważ byłaby widoczna ...

+3

Niewyraźne i prawdopodobnie niepoprawne. –

Powiązane problemy