2010-01-24 81 views
2

嘿傢伙首先我得到了一張圖片視圖的圖像是2900x2100,文件大小約爲4MB我也有一個滾動視圖來移動圖像。 無論如何它墜毀,首先我​​雖然是因爲4MB的大小。然後我調整它的大小,使它成爲1287x1234和1.3MB,但是當我放大太多時它變成了像素。 之後,我設法使它與1.5 MB的2900x2100!所以我在我的設備上運行它,它仍然崩潰!iPhone:Image查看圖片大小限制

任何人都知道這是爲什麼? 這是我在調試器控制檯上得到的結果

編程接收信號:「0」。

警告:check_safe_call:無法恢復當前幀

這裏有更多的信息,這是我的viewDidLoad方法:

的UIImageView * tempimage = [[UIImageView的頁頭] initWithImage:[UIImage的imageNamed: @ 「sanlucasFLAT.jpg」]];

self._FLatLucasImageView = tempimage;

[tempimage release];

_FLatLucasImageView.frame = CGRectMake(-7,0,800,800);

_FLatLucasImageView.contentMode = UIViewContentModeScaleAspectFit;

_FlatLucasScrollView.contentSize = CGSizeMake(_FLatLucasImageView.frame.size.width,_FLatLucasImageView.frame.size.height);

_FlatLucasScrollView.delegate = self;

_FlatLucasScrollView.clipsToBounds = YES;

[_FlatLucasScrollView addSubview:_FLatLucasImageView];

[_FLatLucasImageView release];

當我設置CGRectMake於:(0,0,2900,2961)當我滾動圖像

問候

它不會崩潰

卡洛斯巴爾

+1

問題不完整。發佈崩潰日誌或任何您在控制檯中看到的內容。 – 2010-01-24 17:33:00

回答

5

原因爲什麼你的應用程序崩潰是因爲你使用的圖片太大。
根據UIImage的類參考,它說您應該避免創建尺寸爲的大於1024 x 1024的UIImage對象。

如果向UIImageView對象添加具有比1024 x 1024大的圖像的UIImage對象,則您的應用程序可能會崩潰。如果你很幸運,有時你的應用程序不會崩潰。

1

此代碼非常混亂。事情夫婦:

  • 儘量不要使用實例變量以下劃線前綴(蘋果半私人)
  • 儘量不要使用實例變量以大寫字母(約定,事情開始啓動以大寫字母通常是類或類型)
  • 不要爲實際不公開的實例變量定義屬性。如果他們只是班級內部的東西,那麼你不需要財產。

這就是說,我的猜測是你過度釋放圖像視圖。嘗試刪除最後的[_FLatLucasImageView release]

如果您不需要訪問圖像視圖你已經將其添加到滾動視圖後,那麼我建議徹底刪除實例變量和財產,只是有這樣的代碼:

UIImage* image = [UIImage imageNamed: @"sanlucasFLAT.jpg"]; 
if (image != nil) 
{ 
    UIImageView* imageView = [[[UIImageView alloc] initWithImage: image] autorelease]; 
    if (imageView != nil) 
    { 
     imageView.frame = CGRectMake(-7, 0, 800, 800); 
     imageView.contentMode = UIViewContentModeScaleAspectFit; 

     flatLucasScrollView.contentSize = CGSizeMake(imageView.frame.size.width, imageView.frame.size.height); 
     flatLucasScrollView.delegate = self; 
     flatLucasScrollView.clipsToBounds = YES; 

     [flatLucasScrollView addSubview: imageView]; 
    } 
} 
3

圖像的文件大小在這裏並不重要:UIImage將不得不解壓縮並將解壓縮的圖像存儲在內存中。每個像素通常需要4個字節,這意味着2900 x 2100像素圖像將佔用超過24 MB的內存。在iPhone或iPhone 3G上,您可能沒有那麼多的內存可用於您的整個程序。

也許嘗試將其拆分成較小的圖像,然後在用戶滾動視圖時根據需要加載它們。只需將它切成大約320x480左右的大小(iPhone的屏幕大小),然後只將可見磁貼添加到UIScrollView中,並在用戶滾動時將其刪除,並且它們變得不可見。