2012-07-22 13 views
14

czytałem kilka postów, które zalecają stosowanie:UIGraphicsBeginImageContext musi być zgodny z Retina?

UIGraphicsBeginImageContextWithOptions((image.size), NO, 0.0f) 

zamiast:

UIGraphicsBeginImageContext(image.size). 

Ponieważ pierwsza wykorzystuje Retina skalę podczas rysowania, inaczej dostaniesz mające postać widocznych kwadratów obrazów.

Jestem trochę zdezorientowany, kiedy użyć opcji skali siatkówki.

Jeśli mam zdjęcie o wymiarach 1000x1000 pikseli i nazywam UIGraphicsBeginImageContext, przekazując te wymiary, czy nie określam dokładnie, ile punktów chcę narysować? Czy to w porządku?

Czy powinienem zadzwonić do UIGraphicsBeginImageContextWithOptions przekazując połowę wymiarów (500x500px)? Czy to ma jakieś znaczenie?

+1

'Czytałem kilka postów, które zalecają stosowanie ... Ponieważ pierwsza wykorzystuje Retina skalę podczas rysowania, w przeciwnym razie można dostać blokowe zdjęć . "- ta notatka bardzo mi pomogła. Dzięki! –

Odpowiedz

11

można uzyskać wartość skalę swojego urządzenia w następujący sposób

[[UIScreen mainScreen] scale] 

Dzięki tym informacjom można zdecydować, ile punktów chcesz rysować.

+0

Wiem, ale to, co chciałbym teraz zrobić, to: UIGraphicsBeginImageContext (1000x1000px) różni się od używania UIGraphicsBeginImageContextWithOptions ((500x500px), NO, 0.0f). – jvic

+0

nie jest siatkówką ważną tylko przy wyświetlaniu obrazu, a nie rysowaniu? mam na myśli, myślę, że nie ma znaczenia rozmiar obrazu, o ile pokazuję go, wyświetlam go w widoku o połowie wielkości (siatkówka). – jvic

+1

@jvic Obie dają obraz 1000x1000 pikseli. Ale myślę, że różnica polega na używaniu UIGraphicsBeginImageContext (1000x1000px), rysunek jest wyświetlany na ekranie z 1000x1000 punktów, ale UIGraphicsBeginImageContextWithOptions ((500x500px), NO, 0.0f) z 500x500 punktów, to moje przypuszczenie. –

10

Można tworzyć kontekst obrazu tak:

UIGraphicsBeginImageContextWithOptions(size, false, UIScreen.mainScreen().scale) 
+1

Według dokumentów: _ "Jeśli podasz wartość 0.0, współczynnik skali zostanie ustawiony na współczynnik skali głównego ekranu urządzenia." _. Zatem użycie "0.0" zamiast "UIScreen.mainScreen()." Ma ten sam efekt, ale skorzysta z optymalizacji pod maską. –

+0

Dziękuję za te informacje, widzę, że doktorzy mówią, że skala = 0.0 równa się bieżącej skali ekranu, ale nie może znaleźć niczego o optymalizacji pod maską. Czy możesz rozwinąć ? –

Powiązane problemy