2012-03-07 16 views

Odpowiedz

12

Odpowiadając na moje własne pytanie (zajęło mi kilka dni do debugowania to, więc mam nadzieję, że w ten sposób zaoszczędzić ktoś trochę czasu;)):

Przyczyną wiąże się z wykorzystaniem wzorzystych UIColor (poprzez +[UIColor colorWithPatternImage:]) jako tło kolor na UIView, który jest powyżej UIImageView z tym samym obrazem.

Przykład:

UIImageView *imageView = [[UIImageView alloc] initWithImage:anImage]; 
    [_containerView addSubview:imageView]; 

    UIColor *patternColor = [UIColor colorWithPatternImage:anImage]; 
    UIView *patternView = [[UIView alloc] initWithFrame:frame]; 
    [patternView setBackgroundColor:patternColor]; 
    [_containerView addSubview:patternView]; 

Oba widoki wyciągnąć czarny, i nie wydaje się być problem buforowania gdzie wszystkie inne zastosowania obrazu rysuje czarny aż aplikacja jest zawieszony/wznowione.

Złożyłem numer # 10795514 z Apple, aby zgłosić ten problem, ale wygląda na to, że został wprowadzony w wersji 5.1. Zmniejszenie tego problemu jest dostępne pod adresem: http://iccir.com/public/radar/Radar10795514.zip

Jedynym rozwiązaniem, które znalazłem, było spłaszczenie hierarchii widoków i narysowanie obrazu wzoru dwukrotnie w tym samym widoku.

+1

+1 - Dziękujemy za przesłanie! – Till

+0

Prawdziwy problem to colorWithPatternImage nie ma zastosowania do UIImageView w ios5, powinieneś używać UIView .... – anders

0

miałem ten problem z iOS 5.1 na iPada gdzie używałem colorWithPatternImage na UIScrollView jak ten:

scrollView.backgroundColor = [UIColor colorWithPatternImage:[UIImage imageNamed:@"YOURIMAGE.jpg"]]; 

To działa w iOS 6 (np iPad2 i później), jednak od oryginału iPad, w którym możesz zaktualizować system iOS tylko do wersji 5.1.1, pojawi się biały lub inny stały kolor, który gdzieś zdefiniowałeś. Rozwiązaniem jest użycie nieco mniej atrakcyjną metodę gdzie ustawić backgroundView z Scrollview tak:

scrollView.backgroundView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"YOURIMAGE.png"]]; 

Przetestowałem to w iOS 6 i iOS 5.1, więc należy go również stosować do iPhone, jeśli tam pojawiają się problemy.

Powiązane problemy