2015-04-26 18 views
8

Trong ứng dụng iOS, tôi có 250x85pt UIView. Tôi muốn nó có nền lát gạch hình ảnh. Ảnh gốc là 398x398 px. Tôi muốn hình ảnh của tôi để ngói.Làm cách nào để tạo nền lát nền dựa trên hình ảnh cho UIView để nó không mở rộng?

enter image description here

Khi tôi chạy ứng dụng, gạch hình ảnh của tôi, nhưng vì một lý do nó quy mô như sau:

enter image description here

tôi đã sử dụng đoạn mã sau để đạt được nó:

var image = UIImage(contentsOfFile: "myfilepath.png")! 
var uicolor = UIColor(patternImage: image) 
uiview.backgroundColor = uicolor 

Bạn có thể giải thích 1. lý do tại sao ios chia tỷ lệ hình ảnh của tôi và 2. Làm thế nào để vẽ hình ảnh lát gạch mà không cần mở rộng?

+3

Xin đừng đặt tên file 'var' "UIColor" .. –

Trả lời

6

về cơ bản hình ảnh lớn hơn UIView của bạn. khi bạn cung cấp cho UIColor(patternImage: image), nó sử dụng kích thước 1x của hình ảnh. Hình ảnh chúng tôi thường là máy tính xách tay được thu nhỏ kích thước cửa sổ với tỷ lệ khung hình của nó.

Vì vậy, hãy chia tỷ lệ hình ảnh của bạn theo yêu cầu của bạn và sau đó áp dụng nó làm hình nền.

+0

Vấn đề là hình ảnh tôi tải lên do người dùng tải lên. Có cách nào để điều chỉnh nó bằng cách nào đó từ mã? –

+0

@AlexSmolov, bạn nên sử dụng 'UIImageView' và đặt' ContentMode' thành 'UIViewContentModeScaleAspectFit' – Bhargavi

+0

@AlexSmolov câu hỏi này và câu trả lời của nó sẽ hữu ích cho bạn tôi đoán [UIImageView khía cạnh và trung tâm] (http: // stackoverflow .com/questions/15499376/uiimageview-aspect-fit-and-center) – Bhargavi

4

Để mở rộng câu trả lời của Banto, vấn đề là chế độ xem của bạn là 250x85 điểm, trên thiết bị võng mạc thực sự là 500x170 pixel. Khi hình ảnh x1 của bạn được biến thành một mẫu, nó được áp dụng ở mức điểm. Vấn đề có thể dễ dàng thay đổi bằng cách thiết lập quy mô vào hình ảnh để phù hợp với quy mô trên thiết bị:

let view = UIView(frame: CGRect(x: 0, y: 0, width: 250, height: 85)) 

let image = UIImage(named: "myfilepath.png")! 
let scaled = UIImage(CGImage: image.CGImage, scale: UIScreen.mainScreen().scale, orientation: image.imageOrientation) 

view.backgroundColor = UIColor(patternImage: scaled!) 
+0

Cảm ơn, David! Tôi phát hiện ra rằng nếu bạn thêm @ 3x (như trong "[email protected]") vào tên hình ảnh, nó sẽ hoạt động hoàn hảo trên mọi thiết bị. –

+1

Tôi muốn đề xuất 2x tại thời điểm đó, nhưng vâng, đó là làm khá nhiều điều tương tự. –

0

Hãy thử điều này

self.mainView.layer.contents = (id)[UIImage imageNamed:@"CROPNET.png"].CGImage; 
Các vấn đề liên quan