2012-03-01 33 views
5

Tôi có một số UIImageView làm subview của UIView (kích thước khung 300 x 300). My UIImage sẽ là chân dung, phong cảnh hoặc một số kích thước lẻ. Làm cách nào để điền vào số UIImage trong kích thước khung hình UIView mà không kéo giãn hình ảnh đến 300 x 300?UIImageView điền vào UIView

Mục đích của việc này, tôi sẽ thêm UIImageView làm đường viền hình ảnh khác. Xin vui lòng giúp đỡ.

Cảm ơn.

Trả lời

13

Hãy thử

[img setContentMode:UIViewContentModeScaleAspectFit];

UIViewContentModeScaleAspectFit: Cân nội dung để phù hợp với kích thước của xem bằng cách duy trì tỷ lệ khía cạnh. Mọi khu vực còn lại của giới hạn của chế độ xem đều minh bạch.

hoặc [img setContentMode:UIViewContentModeScaleAspectFill];

UIViewContentModeScaleAspectFill: Cân nội dung để điền vào kích thước của khung nhìn. Một số phần của nội dung có thể được cắt bớt để lấp đầy các giới hạn của chế độ xem.

nếu bạn đang cắt subviews, thì bạn cần phải làm

[imgView clipToBounds:YES]; 
+0

tôi đã cố gắng sử dụng 2 chế độ trên, hình ảnh của tôi không vừa với 300 x 300 – RockBaby

+0

ivEditImage = [[UIImageView alloc] initWithImage: imgChoosen]; ivEditImage.frame = vwEditingImage.frame; [ivEditImage setContentMode: UIViewContentModeScaleAspectFill]; – RockBaby

+0

thậm chí 'UIViewContentModeScaleAspectFit' không làm điều đó? –

0

Sử dụng thuộc tính contentMode của UIImageView.


Edit: và thiết lập kích thước hình ảnh để 300x300.

0
[image setContentMode:UIViewContentModeScaleToFill]; 
1

Thiết lập thuộc tính của UIImageView contentMode để một trong hai giá trị này tùy thuộc vào nơi bạn muốn đặt nó trong SuperView:

UIViewContentModeCenter, 
    UIViewContentModeTop, 
    UIViewContentModeBottom, 
    UIViewContentModeLeft, 
    UIViewContentModeRight, 
    UIViewContentModeTopLeft, 
    UIViewContentModeTopRight, 
    UIViewContentModeBottomLeft, 
    UIViewContentModeBottomRight, 

Là giá trị này:

UIViewContentModeScaleToFill, 
    UIViewContentModeScaleAspectFit, 
    UIViewContentModeScaleAspectFill, 

Thực sự sẽ khiến hình ảnh là 300 x 300, đó là những gì bạn không muốn.

+3

Có cách nào để kết hợp chúng không? Điều tôi muốn là: giả sử hình ảnh 100x10 và UIImageView toàn màn hình. Tôi muốn nó mở rộng cho đến khi kích thước ngang bằng với chiều rộng UIImageView (nói 320 cho iPhone) và hình ảnh kết quả (hiện tại 320x32) ở trên cùng. Tôi đã thử imgview.contentMode = UIViewContentModeScaleAspectFit | UIViewContentModeTop; Nhưng nó không hoạt động. Nó chỉ làm phần UIViewContentModeTop (100x10 ở trên cùng). – Gik

+0

@Gik - Bạn có tìm cách nào để làm điều đó không. Tôi có cùng một vấn đề. –

+0

Tôi đã làm điều đó bằng cách sử dụng một thủ thuật. Tôi "tạo" một hình ảnh khác (từ bản gốc), kéo dài để điền vào kích thước nhỏ hơn và sau đó đệm với các điểm ảnh tôi đã "mất tích". Vì vậy, cuối cùng tôi có một hình ảnh 300x300 từ bản gốc. Nếu bạn muốn tôi có thể gửi mã. – Gik

2

Ah tôi chỉ đọc lại những gì bạn đang hỏi, tôi biết câu hỏi của bạn là gì bây giờ.

Thay đổi khung của UIImageView và khi nào ảnh của bạn cũng vậy. Bạn không muốn hình ảnh của bạn để thay đổi, nhưng bạn muốn ImageView của bạn để điều chỉnh để điền vào quan điểm nó được chứa trong.

CẬP NHẬT

I figured it out.

[self.imageView setContentMode:UIViewContentModeCenter]; 

Bất kể hướng nào, kích thước vẫn giữ nguyên.

Bạn cũng có tùy chọn đặt nó để căn chỉnh trên, dưới, trái, phải, trên cùng bên trái, trên cùng bên phải, dưới cùng bên trái, dưới cùng bên phải, tất cả đều chỉ giúp căn chỉnh hình ảnh của bạn và KHÔNG vẽ lại hoặc chỉnh lại kích thước bức hình.

Điều đó có hữu ích không?

+0

nếu tôi vẽ lại, nó sẽ kéo giãn hình ảnh của tôi. Có bất kỳ lựa chọn nào không kéo dài? – RockBaby

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