Tôi đặt một hình ảnh play.png vào chế độ xem của tôi. Khi khung nhìn ban đầu tải, iPhone 4 lấy tệp [email protected] tương ứng và nó trông rất tuyệt. Tuy nhiên, khi tôi nhấn vào nút phát, mã của tôi hoán đổi nó cho tệp pause.png. Sau đó, khi tôi chạm vào pause.png để quay lại play.png, nó sử dụng tệp play.png gốc (không phải là phiên bản @ 2x như tôi nghĩ nó sẽ tự động tham chiếu).Biểu tượng võng mạc (@ 2x) không được sử dụng khi hình ảnh được chỉ định trong mã
Đây là mã tôi đã cố gắng để sử dụng:
[button setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
Vì vậy, nếu tôi trao đổi tập tin sau khi tải xem ban đầu, tôi phải tự xác định phiên bản @ 2x bên trong một tuyên bố NẾU? Nếu vậy, UIScreen.scale có thuộc tính tốt nhất để sử dụng cho điều này không?
Tôi hiện đang sử dụng mã như thế này:
if ([UIScreen mainScreen].scale > 1.0)
{
[button setImage:[UIImage imageNamed:@"[email protected]"] forState:UIControlStateNormal];
}
else
{
[button setImage:[UIImage imageNamed:@"play.png"] forState:UIControlStateNormal];
}
Nó làm việc tốt nhưng có báo cáo kết quả NẾU trong đó là gây phiền nhiễu và dường như một chút mong manh.
Cảm ơn trước cho tất cả các bạn thông minh ra khỏi đó.
Vui lòng đăng cách hoán đổi hình ảnh ... 'Hình ảnh UIImageNamed' thường xử lý tự động trong khi các phương pháp khác không (chưa) – iwasrobbed
[button setImage: [UIImage imageNamed: @ "play.png"] forState: UIControlStateNormal]; – nicjohnson
bây giờ tôi đang sử dụng những điều sau (xin lỗi, tôi không thể tìm ra cách định dạng mã như mã): nếu ([màn hình chính của UIScreen .scale> 1.0) { \t [button setImage: [UIImage imageNamed: @ "[email protected]"] forState: UIControlStateNormal]; } else { \t [nút setImage: [UIImage imageNamed: @ "play.png"] forState: UIControlStateNormal]; } Nó hoạt động tốt nhưng có tuyên bố IF trong đó là gây phiền nhiễu và có vẻ hơi mong manh. – nicjohnson