2012-06-10 26 views
7

Tôi gần như đã hoàn thành với phiên bản ứng dụng của iPhone khi tôi nhận ra rằng tôi sẽ phải (có thể?) Viết điều kiện cho mọi phần tử giao diện người dùng vì chúng sử dụng đồ họa khác nhau. Điều này sẽ làm cho mã của tôi rất lộn xộn. Tôi có 15 điều khiển giao diện người dùng tùy chỉnh khác nhau và tôi không thể tưởng tượng rằng thiết lập một điều kiện ("nếu tải ipad image_ipad, nếu iphone tải image_iphone") cho mọi phương pháp là cách tốt nhất để thực hiện việc này. Bất cứ ai có thể đề xuất một kỹ thuật cụ thể để đối phó với điều này? Hoặc có cách nào để đặt tên cho hình ảnh như bạn có thể giữa võng mạc và thường xuyên không?Làm thế nào để giảm thiểu mã khi sử dụng hình ảnh khác nhau cho iPad và iPhone?

+0

tại sao không sử dụng các điều khiển chuẩn tự động mở rộng giữa iPhone và iPad thay vì tạo điều khiển tùy chỉnh? – melsam

+0

Tất cả giao diện người dùng của tôi là đồ họa tùy chỉnh. Điều khiển UIKit, hình ảnh của riêng tôi. – frankie

+0

Tại sao chúng có kích thước khác nhau trên iPad? Gần như mọi điều khiển UIKit đều có cùng kích thước trên cả hai thiết bị. Chỉ thanh điều hướng mới thay đổi chiều cao của nó. – calimarkus

Trả lời

7

Bạn sẽ chỉ cần chuyển tên hình ảnh cơ bản .. giả sử tên hình ảnh của chúng tôi là "Apple.png", sau đó bạn sẽ viết tên hình ảnh như thế này UIImage *image = [UIImage ImageNamed:@"Apple.png"] và tên cho hình ảnh cho các trường hợp sau sẽ là:

1. iPad> đặt ~ ipad, tên hình ảnh sẽ "Apple~ipad.png"

2. iPhone> đặt ~ iphone, tên hình ảnh sẽ "Apple~iphone.png"

3.For võng mạc display> đặt @ 2x, tên hình ảnh sẽ là "[email protected]"

4.if bạn có diffrenet hình ảnh cho retina diplay for ipad và iphone nó sẽ như thế này, dành cho iPad "[email protected]~ipad.png" ,, dành cho iPhone "[email protected]~iphone.png"

Nếu bạn đặt tên như thế này iOS sẽ phát hiện tên hình ảnh phù hợp nhất và tải nó.

+1

có vẻ như câu trả lời hợp pháp –

+0

Cảm ơn bạn. Đó là một câu trả lời rất hữu ích. – frankie

2

Nếu bạn muốn có phiên bản cho võng mạc và không có võng mạc, bạn chỉ cần lưu hai phiên bản nội dung trong gói của mình. Nếu nội dung của bạn được gọi là button.png bạn lưu:

-button.png cho phiên bản không có võng mạc. [email protected] cho phiên bản màn hình hiển thị võng mạc.

Mã của bạn:

UIImage * myImage = [UIImage imageNamed:@"button.png"]; 

Hệ thống sẽ tự động kiểm tra các @ 2x.png nếu võng mạc hoặc nó sẽ chọn khác cho những người không võng mạc

Bạn có thể đặt myImage trong giao diện người dùng tùy chỉnh của bạn, và hệ điều hành làm phần còn lại cho bạn ;-)

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