2010-09-10 26 views
10

Ai đó có thể trả lời điều này một cách dứt khoát? Dường như đôi khi việc thay đổi khung của UIImageView sẽ thay đổi kích thước hình ảnh của nó và đôi khi không.iOS - Có nên thay đổi khung của UIImageView thay đổi kích thước hình ảnh của nó không?

Tôi đã tải hình ảnh và tạo UIImageView với hình ảnh, có kích thước khoảng 100x100. Thực hiện những điều sau đây hoàn toàn không có hiệu lực:

myImageView.contentMode = UIViewContentModeScaleAspectFit; 
myImageView.frame = CGRectMake(0, 0, 30, 30); 

Rõ ràng là tôi muốn thu nhỏ hình ảnh xuống, nhưng nó vẫn giữ nguyên kích thước.

EDIT: Nếu tôi làm điều này:

myImageView.clipsToBounds = YES; 

tôi nhận được một phần 30x30 cắt của hình ảnh, nhưng chỉ góc trên của nó. Làm cách nào để thu nhỏ toàn bộ hình ảnh xuống 30x30?

Trả lời

2

Có, bạn đang làm đúng. contentMode được sử dụng như thế này sẽ giữ kích thước hình ảnh vào chế độ xem của bạn với khía cạnh được giữ nguyên. Và rõ ràng là việc thay đổi khung nên di chuyển và thay đổi kích thước chế độ xem.

Bạn có chắc chắn rằng không có gì khác là cá? Có phải myImageView không vì lý do nào đó ở đây? (Nếu đó là chế độ xem do người xây dựng giao diện tạo ra, ổ cắm có được nối không?)

+0

chắc chắn không phải là không, vì nó xuất hiện trên màn hình và tôi có thể đặt clipToBounds trên đó. – sol

1

Bạn nghĩ điều đó có hiệu quả, nhưng có những người ở khắp mọi nơi có cùng một vấn đề. Lần duy nhất mà tôi đã nhìn thấy nó hoạt động không phải là bằng cách tự động mở rộng quy mô, đó là bởi thực sự thay đổi kích thước và vẽ lại hình ảnh: How to scale a UIImageView proportionally?

1

Hãy thử cách này:

myImageView. giới hạn = CGRectMake (0, 0, 30, 30);

Tôi chưa có may mắn khi thay đổi khung của UIImageView để chia tỷ lệ hình ảnh. Thay vào đó hãy thử thay đổi giới hạn.

3

Câu hỏi cũ, nhưng trong trường hợp của tôi, sự cố đã cố gắng thực hiện các sửa đổi trong "viewDidLoad" cho trình điều khiển chế độ xem. Thử thay đổi khung trong "viewDidLayoutSubviews".

- (void)viewDidLayoutSubviews 
{ 
    //do uiimageview frame changing here 
    ... 
} 
Các vấn đề liên quan