2011-12-01 24 views
12

Các mã sau gạch khu vực hình ảnh trong insets quy định:Cách thực hiện [UIImage resizableImageWithCapInsets:] trước iOS5?

UIEdgeInsets imgInsets = UIEdgeInsetsMake(10.f, 5.f, 13.f, 44.f); 
UIImage *image = [[UIImage imageNamed:@"fileName"] resizableImageWithCapInsets:imgInsets]; 

Tuy nhiên điều này chỉ có sẵn trong iOS5. Làm thế nào tôi có thể đạt được kết quả tương tự cho khả năng tương thích trước-iOS5?

[UIImage stretchableImageWithLeftCapWidth: topCapHeight:] không thích hợp theo tôi hiểu, vì nó giả định rằng khu vực có thể lát gạch rộng 1px. Nói cách khác nó không gạch, nó streches. Do đó, nó không hoạt động với các mẫu, chỉ với các hình ảnh một màu. Điều này được thể hiện trong ảnh chụp màn hình bên dưới.

Sau đó, có [UIColor colorWithPatternImage:], nhưng điều này giả định rằng toàn bộ hình ảnh cần phải được lát gạch, nó không cho phép các inset phải được giữ nguyên.

Bất kỳ trợ giúp nào được đánh giá cao, cảm ơn.

.

enter image description here

+0

Tôi có cùng một vấn đề. Một mặt, hooray rằng họ cố định nó trong iOS 5. Mặt khác, tôi đang đấu tranh để suy nghĩ của một cách đơn giản để thêm chức năng này để nó hoạt động trong iOS 4. Bạn đã quyết định làm gì? –

+0

Có phải trường hợp có lẽ trước khi các nhà thiết kế đồ họa đặc trưng này chỉ là các nút xây dựng rất bận rộn ?! – Ellis

Trả lời

2

Tôi cũng đang tìm giải pháp cho vấn đề này. Tại thời điểm này tôi nghĩ rằng tôi sẽ sử dụng respondsToSelector:@selector(resizableImageWithCapInsets:) trên UIImage ban đầu để xem liệu phương pháp có sẵn hay không. Nếu không, hãy sử dụng hình ảnh có thể kéo giãn.

Tôi vẫn đang tìm giải pháp tốt hơn và nếu có, tôi sẽ cập nhật câu trả lời.

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