2012-05-28 42 views
5

Tôi gặp vấn đề mà tôi chưa thể tìm ra. Tôi có một ứng dụng được thực hiện sẽ chụp ảnh từ phía trước và một từ máy ảnh sau, sau đó hợp nhất chúng lại với nhau.Tải hình ảnh võng mạc (chất lượng cao) theo chương trình (trên các nút)

Tên của ứng dụng này là GroupCam

Tuy nhiên tôi có một vấn đề ở nơi UIButtons của tôi sẽ không được nạp như hình ảnh võng mạc ngay từ đầu. Nếu tôi đặt chúng là @ 2x trên trình tạo giao diện, chúng xuất hiện ở chất lượng cao nhưng một khi tôi tải lại chúng theo chương trình thì các phiên bản thấp sẽ xuất hiện thay thế.

Điều này là do thực tế, sau khi chụp ảnh và màn hình thay đổi hình ảnh nút thay đổi, nhưng khi người dùng nhấn nút quay lại, biểu tượng máy ảnh sẽ trông khủng khiếp (vì phiên bản chất lượng thấp đang được tải) .

Vui lòng kiểm tra những hình ảnh sau đây:

Màn hình đầu tiên: Chỉ vào nút phía trên bên phải xuất hiện méo bởi vì tôi đang kiểm tra giá trị của đèn flash máy ảnh và "tải" các hình ảnh tương ứng chương trình khác.

First Screen

Second Screen: Người dùng đã chuyển sang màn hình khác và trở lại là người đầu tiên, tất cả các nút được nạp lại và họ bây giờ tất cả trông méo.

Second Screen

Nếu ai có bất kỳ ý tưởng về lý do tại sao điều này xảy ra tôi sẽ thực sự đánh giá cao nó!

Cảm ơn.

Chỉnh sửa:

Đây là cách tôi tải hình ảnh.

[self.flashButton setImage:[UIImage imageNamed:@"flashOff"] 
          forState:UIControlStateNormal]; 

Tôi đọc một nơi nào đó trên internet làm việc này sẽ tự động tải phiên bản phù hợp nhất của hình ảnh.

Tôi cũng đã cố gắng này, nhưng kết quả là như nhau:

[self.takeButton setImage:[UIImage imageNamed:@"takePhoto.png"] forState:UIControlStateNormal]; 
+1

Tôi đã có kết quả tuyệt vời bằng cách sử dụng hình ảnh bình thường và võng mạc trong ứng dụng. Vì vậy, những gì tôi muốn đề nghị bạn làm là chọn độ phân giải bình thường của những hình ảnh này, và không bao gồm chúng trong dự án của bạn (thông qua ô bên phải thứ 3 - chỉ cần bỏ chọn hộp kiểm). Bây giờ ứng dụng của bạn CHỈ có hình ảnh võng mạc. Vâng, nếu mọi thứ trở nên tồi tệ, sau đó một cái gì đó trong ứng dụng của bạn hơi say lên. Đã xảy ra sự cố với [UIImage imageNamed: foo.png]. Nếu bạn thay đổi hình ảnh đó, tất cả người dùng tiếp theo của hình ảnh đó sẽ có được hình ảnh đã sửa đổi. Đọc lại hình ảnh UIImageNam: –

+2

Vì vậy, tôi chỉ đọc lại câu hỏi của bạn, và tôi chỉ thấy tuyên bố này: "Nếu tôi đặt chúng là" @ 2x "trên trình tạo giao diện". Vì vậy, trong IB, bạn đã nhập tên của họ là "[email protected]", và nó hoạt động. Vì vậy, điều duy nhất tôi có thể nghĩ rằng vấn đề của bạn có thể là định dạng của "@ 2x". Bạn có chắc chắn bạn đã đặt tên đúng những hình ảnh đó - "[email protected]", NOT & 2x.png v.v. Có vẻ như iOS không thấy các tập tin rez hi và đó là lý do duy nhất tôi có thể nghĩ về điều đó sẽ giải thích nó . Vì vậy, hãy thử xóa "@ 2x" trong IB và xem điều gì xảy ra. Tôi sẽ đặt cược bạn nhận được tất cả các rez thấp tất cả các thời gian sau đó. –

+0

có chúng được định dạng và đặt tên chính xác. Những hình ảnh sẽ được tải trong HD hoàn toàn tốt đẹp của mình, vấn đề duy nhất là khi tôi tải chúng theo chương trình. iOS quyết định tải một định nghĩa thấp. – Pochi

Trả lời

3

Nếu ứng dụng của bạn được chụp ảnh từ camera phía trước và một từ camera trở lại và sáp nhập chúng lại với nhau, sau đó thiết bị đòi hỏi một mặt trận quay mặt về phía camera. Tất cả các thiết bị iOS có camera mặt trước cũng có màn hình võng mạc (miễn là bạn không phát triển cho iPad 2, nhưng đó là một câu chuyện khác) nên bạn không cần phải có hình ảnh bình thường, vì vậy tất cả hình ảnh của bạn hình ảnh võng mạc. Nếu không có hình ảnh bình thường thì vấn đề này sẽ không xảy ra. Tạo bản sao lưu và thử xóa tất cả các hình ảnh bình thường rồi thử. Vì bạn sử dụng hình ảnh UIImageNam: @ "ImageName", như bạn đã nói, nên tự động chọn hình ảnh! Chúc may mắn!

+0

Tôi đã hy vọng tìm ra lý do tại sao điều này xảy ra nhưng điều này dường như là một giải pháp. – Pochi

+0

@LuisOscar Xin lỗi, đó là dự đoán tốt nhất của tôi: (Hãy thử báo cáo lỗi tại bugreport.apple.com. – sridvijay

4

Trước hết, có thể đáng để xác minh rằng các phiên bản có độ phân giải thấp thực sự đang được hiển thị. Gần đây tôi đã nhảy vào một giả định tương tự, đã hoán đổi phiên bản có độ phân giải thấp của hình ảnh với một cái gì đó khác, và xác nhận rằng phiên bản hi-res thực sự vẫn đang được hiển thị, nhưng bị méo mó.

vấn đề thực tế của tôi, tôi đã thiết lập

<uibutton_superview>.layer.shouldRasterize = YES;

Nếu bất kỳ của các nút tổ tiên có bộ này, nó có khả năng có thể là vấn đề của bạn.

3

Trường hợp tên tệp của hình ảnh không quan trọng trên trình mô phỏng, nhưng trên thiết bị.

Sử dụng tất cả trường hợp nhất quán. Image.png và [email protected] được nhận dạng và sẽ hoạt động cùng nhau trong trình mô phỏng nhưng không hoạt động trên thiết bị. sử dụng image.png và [email protected] Hoặc bạn cũng có thể sử dụng .jpg miễn là trường hợp phù hợp.

Các vấn đề liên quan