2013-09-21 53 views
6

Tôi có một ứng dụng tôi đang xây dựng cho iOS 6 mà gần đây tôi đã nâng cấp lên iOS 7. Tôi có một số UIScrollView với một vài Tùy chỉnh UIViews. Trong số UIViews, tôi có một đơn UIImageView trong mỗi. Vì một số lý do, khi tôi đặt UIImageView.image trong iOS 6, nó hiển thị tốt, nhưng iOS 7 sẽ không hiển thị chúng. Dưới đây là các mã:UIImageView với iOS 7 không hiển thị

int i = 0; 

     for (UIImageView *imageView in myImageViewsOutletCollection) 
     { 
      imageView.image = nil; 
      if (imagesArray.count > i) 
       imageView.image = [UIImage imageWithData:[imagesArray objectAtIndex:i]]; 

      if (imageView.image == nil) 
       NSLog(@"signature image with index: %i is nil", i); 
        else 
          NSLog(@"It Worked") 

      i++; 
     } 

Ứng dụng của tôi đang đăng nhập: @"It Worked", vì vậy tôi biết UIImageView.image không phải là nil. Tôi có thể làm gì sai?

EDIT:

Tôi đã thử các UIImageRenderingMode:

UIImage *imageForView = [UIImage imageWithData:[imagesArray objectAtIndex:i]]; 
imageForView = [imageForView imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; 

imageView.image = imageForView; 

Vẫn không làm việc. Tuy nhiên, @ Max_Power89 nói:

vì nó được viết trên diễn đàn nhà phát triển táo: imageWithData lỗi báo cáo

này phải là một lỗi. tôi hy vọng họ sửa chữa vấn đề sớm.

EDIT 2:

Tôi cũng đã thêm này:

NSData *pngData = UIImagePNGRepresentation(imageView.image); 
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory,NSUserDomainMask, YES); 
NSString *docs = [paths objectAtIndex:0]; 

NSError *writeError = nil; 
[pngData writeToFile:[docs stringByAppendingFormat:@"/image.png"] options:NSDataWritingAtomic error:&writeError]; 
if(writeError!=nil) 
{ 
    NSLog(@"%@: Error saving image: %@", [self class], [writeError localizedDescription]); 
} 

Những hình ảnh được lưu trong thư mục ứng dụng, vì vậy tôi biết chắc chắn rằng hình ảnh không phải là con số không.

+0

ghi lại kích thước của chế độ xem hình ảnh – Wain

+0

@Wain - NSLog của khung là '0,0,320,120' Không có vấn đề gì ở đây –

+0

Chúng tôi có giải pháp làm việc cho điều này không? Tôi đang gặp vấn đề tương tự. Điều này cũng đi cho 'UITableView': ( – dzep

Trả lời

1

Đó là sự cố/lỗi với Ràng buộc bố cục tự động trong iOS 7. Nếu bạn loại bỏ các ràng buộc trên UIView, nó sẽ không có vấn đề gì. Bạn có thể đặt khung theo lập trình nếu cần.

+0

câu trả lời này có hiệu quả đối với tôi. – chongzixin

0

Trong iOS 7, tải hình ảnh theo mặc định chỉ tải alpha Chanel của nó và tô màu bằng màu sắc chi tiết. Hình ảnh của bạn đang hiển thị, chỉ có cùng màu với nền.

- (UIImage *)imageWithRenderingMode:(UIImageRenderingMode)renderingMode 

Set nó để:

UIImageRenderingModeAlwaysOriginal 
+0

Vì vậy, làm cách nào để khắc phục điều đó? - @Kyle Fang –

+0

Hãy cho tôi biết nếu nó hoạt động. @ Cody –

+0

Không hoạt động. Đề nghị tuyệt vời, mặc dù. –

0

vì nó được viết trên diễn đàn nhà phát triển táo: imageWithData bug report

này phải là một lỗi. tôi hy vọng họ sửa chữa vấn đề sớm.

+0

Hmm, có thể là vậy. Tuy nhiên, mã dường như không trở lại nil. –

0

Có thể điều này sẽ hữu ích đối với bất kỳ ai: Tôi đã gặp vấn đề tương tự - ít nhất là nó trông như thế này. Cuối cùng tôi đã tìm ra, rằng UIScrollView đang ẩn một số lớp xem nền. Nền UIScrollView được đặt thành "Màu nền bảng xem nhóm" trong tệp .xib-File. Nếu tôi thay đổi điều đó thành "màu sắc rõ ràng", hành vi sẽ trở lại bình thường (như trong iOS 6). Dường như, "hành vi mặc định" đã thay đổi cho yếu tố đó từ iOS6 đến 7. Có thể ai đó có thể xác nhận điều này.