2010-12-19 16 views
7

Tak więc po uruchomieniu aplikacji z urządzenia pojawiają się obrazy i wszystko działa świetnie. Jednak po przejściu na urządzenie uruchamiam około 10 z 38 zdjęć, które się nie wyświetlają. Wstawiam nazwy obrazów z bazy danych sqlite i już sprawdziłem i nazwy są poprawne, sprawy i wszystko. Sprawdziłem pakiet i obrazy są tam poprawnie.Obrazy wyświetlane w symulatorze, ale nie na urządzeniu iPhone'a

Czy pamięć działa w tym sensie? Nie jestem naprawdę pewien, co jeszcze może spowodować, że tak się stanie?

Dzięki!

Rozwiązanie: Pliki w jakiś sposób nie zostały poprawnie zapisane i nie można ich było otworzyć za pomocą programu Photoshop lub nawet farby. W związku z tym, że pliki nie mogły być otwarte, nie wyświetlały się ... Dzięki za pomoc dla wszystkich!

Odpowiedz

6

Symulator akceptuje szerszy zakres formatów obrazu. Czasami miałeś określony typ pliku, którego urządzenie nie może wyświetlić. Sprawdź dwukrotnie 10 plików, szukając pewnej różnicy od pozostałych.

2

Tak, pamięć absolutnie w to gra. Sprawdź połączenia do tworzenia UIImage i upewnij się, że nie wracają puste. Sprawdź również, czy otrzymujesz ostrzeżenia z pamięci w oknie konsoli.

43

Pierwszą rzeczą do sprawdzenia jest przypadek napisów, których używasz w odniesieniu do zasobów. W iPhonie rozróżniana jest wielkość liter, ale symulator nie jest.

Ups, właśnie widziałem, że sprawdziłeś skrzynkę. Lepiej zgłoś wszystkie wywołania kreacji UIImage!

+1

Wnikliwe. 12. – ratsimihah

+2

To mi pomogło. Sam symulator wydaje się być niewrażliwy na wielkość liter dla imageNamed part of UIImage, ale urządzenie jest na to surowe. – Joseph

+0

Pomogło mi to również. – Bobby

1

Ogólnie rzecz biorąc, jeśli przyczyną problemu był rozmiar w pamięci, aplikacja ulegnie awarii z niskim błędem pamięci urządzenia. Wygląda jednak na to, że obrazy po prostu się nie wyświetlają.

Jedną z rzeczy, które mogą się nie udać, jest rozmiar obrazów. UIViews na iPhonie może mieć tylko wymiary mniejsze niż maksymalny rozmiar tekstury obsługiwany przez GPU. Apple twierdzi, że jest to 1024 x 1024, ale uważam, że jest bardziej podobny do 2048 x 2048 nawet na oryginalnym iPhonie. Możliwe, że tworzysz widok dla niektórych z tych obrazów, który przekracza ten rozmiar w jednym wymiarze, ale twój Mac ma większy maksymalny rozmiar tekstury na swoim GPU i dlatego wyświetla się dobrze w Symulatorze.

+0

tylko komentarz na temat rozmiaru obrazu, podwójny rozmiar jest ze względu na nowy iPhone 4. Możesz teraz zrobić zdjęcia dwukrotnie większy rozmiar. Uważam, że jest to tak proste, jak zdjęcie z oryginalnym rozmiarem obrazu i oryginalną nazwą, drugie z nazwą obrazu "@ x2" lub "@ 2", która jest dwukrotnie większa od rozdzielczości. – Matt

+0

@Matt - Nie, różnica w maksymalnym rozmiarze tekstury nie wynika z iPhone'a 4, jest nieodłącznym ograniczeniem wykorzystywanego GPU. Mogłem używać warstw i tekstur 2048 x 2048 od czasu iPhone OS 2.0 na oryginalnym iPhonie, więc nie ma to związku z nowymi możliwościami wyświetlacza Retina. Jest to tylko przypadek dokumentacji Apple różniącej się od rzeczywistego sprzętu, który może być po prostu konserwatywny w przypadku zmiany specyfikacji GPU w przyszłości. –

+0

Maksymalna rozdzielczość jest określona jako 2048 dla PowerVR SGX Odnośnie obrazów: okazało się, że nasza aplikacja nie ulega awarii, jeśli obrazy są zbyt duże lub jeśli jest za mało pamięci. IOS zrzuca inne obrazy, które nie są wyświetlane, a kiedy wrócisz, po prostu tam się znajdują. Konsola wyświetla jednak ostrzeżenie o pamięci. – twerdster