Sự khác biệt giữa UIImage
và UIImageView
là gì? Ai đó có thể giải thích nó với một ví dụ?Sự khác biệt giữa UIImage và UIImageView
Trả lời
:
UIImage *bgImage = [UIImage imageNamed:@"[email protected]"];
UIImageView *backgroundImageView = [[UIImageView alloc] initWithImage:bgImage];
backgroundImageView.frame = [[UIScreen mainScreen] bounds];
A
UIImage
đối tượng là một cách cao cấp để hiển thị dữ liệu hình ảnh. Bạn có thể tạo hình ảnh từ tệp, từ các đối tượng hình ảnh Quartz hoặc từ hình ảnh thô dữ liệu bạn nhận được. Lớp UIImage cũng cung cấp một số tùy chọn để vẽ hình ảnh đến ngữ cảnh đồ họa hiện tại bằng cách sử dụng các chế độ hòa trộn khác nhau và giá trị độ mờ.Đối tượng hình ảnh không thay đổi, vì vậy bạn không thể thay đổi các thuộc tính của chúng sau khi tạo. Điều này có nghĩa là bạn thường chỉ định các thuộc tính của hình ảnh lúc khởi tạo hoặc dựa vào siêu dữ liệu của hình ảnh để cung cấp giá trị thuộc tính. Tuy nhiên, trong một số trường hợp, lớp UIImage cung cấp các phương thức thuận tiện để lấy bản sao của hình ảnh sử dụng giá trị tùy chỉnh cho thuộc tính.
Vì đối tượng hình ảnh không thay đổi được, chúng cũng không cung cấp truy cập trực tiếp vào dữ liệu hình ảnh cơ bản của chúng. Tuy nhiên, bạn có thể nhận được đối tượng NSData chứa đại diện PNG hoặc JPEG của hình ảnh dữ liệu bằng cách sử dụng các chức năng
UIImagePNGRepresentation
vàUIImageJPEGRepresentation
.Hệ thống sử dụng đối tượng hình ảnh để thể hiện ảnh tĩnh được chụp bằng máy ảnh trên thiết bị được hỗ trợ. Để chụp ảnh, hãy sử dụng lớp UIImagePickerController. Để lưu ảnh vào anbom Ảnh Đã lưu , hãy sử dụng chức năng
UIImageWriteToSavedPhotosAlbum
.
Một
UIImageView
cung cấp một container xem dựa trên để hiển thị hoặc là một hình ảnh duy nhất hoặc cho hiệu ứng động một loạt các hình ảnh. Để làm nổi bật hình ảnh , lớpUIImageView
cung cấp các điều khiển để đặt thời lượng và tần suất của hoạt ảnh. Bạn cũng có thể bắt đầu và dừng hoạt ảnh một cách tự do.Đối tượng xem hình ảnh mới được định cấu hình để bỏ qua sự kiện của người dùng theo mặc định. Nếu bạn muốn xử lý sự kiện trong một lớp con tùy chỉnh của
UIImageView
, bạn phải thay đổi giá trị của thuộc tínhuserInteractionEnabled
thànhYES
sau khi khởi tạo đối tượng.Khi đối tượng
UIImageView
hiển thị một trong các hình ảnh của nó, hành vi thực tế dựa trên các thuộc tính của hình ảnh và chế độ xem. Nếu một trong các thuộc tínhleftCapWidth
hoặc của hình ảnh là khác không, thì hình ảnh sẽ được kéo dài theo các giá trị trong các thuộc tính đó. Nếu không, hình ảnh được chia tỷ lệ, có kích thước để vừa hoặc được đặt trong chế độ xem hình ảnh theo thuộc tính contentMode của chế độ xem. Đó là khuyến cáo (nhưng không bắt buộc) mà bạn sử dụng hình ảnh có cùng kích thước. Nếu hình ảnh có kích thước khác nhau, mỗi hình ảnh sẽ được điều chỉnh để phù hợp riêng biệt dựa trên chế độ đó.Tất cả các hình ảnh được liên kết với đối tượng
UIImageView
phải sử dụng cùng một tỷ lệ . Nếu ứng dụng của bạn sử dụng hình ảnh có các tỷ lệ khác nhau, chúng có thể hiển thị không chính xác.
UIImage
chứa dữ liệu cho hình ảnh. UIImageView
là chế độ xem tùy chỉnh nhằm hiển thị UIImage
.
UIImage
là một đối tượng dữ liệu chứa byte hình ảnh.
UIImageView
là điều khiển hiển thị dữ liệu UIImage
.
UIImage
đối tượng lưu trữ dữ liệu từ một hình ảnh (ví dụ: dữ liệu từ một tập tin png)
UIImageView
đối tượng được sử dụng để hiển thị một ví dụ UIImage
Nói tóm lại: Bạn tạo một thể hiện của UIImage
đối tượng để tổ chức dữ liệu hình ảnh của, như thế này:
NSString *sourcePath = [[[NSBundle mainBundle] resourcePath] stringByAppendingPathComponent:@"/picture.jpg"]; //assuming your image is in your app's bundle
UIImage *img = [[UIImage alloc]initWithContentsOfFile:sourcePath];
Sau đó bạn tạo một thể hiện của UIImageView
hoặc thông qua IB hoặc mã để hiển thị hình ảnh của bạn trên màn hình, như sau:
[imageView1 setImage:img]; //assume you already create an instance of UIImageView named imageView1