Tôi tin rằng mặt nạ hình ảnh là tùy chọn tốt nhất. Nhưng nếu bạn xoay, biến đổi, tạo hiệu ứng động hoặc muốn có nền rõ ràng, bạn có thể làm điều gì đó như sau:
Tạo chế độ xem phụ là kích thước của hình ảnh bạn muốn hiển thị. Đảm bảo rằng nó có clipsToBounds
thành đúng và định vị hình ảnh cho phù hợp.
UIView *mainView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 100, 30)];
//this is the part of the image you wish to see
UIView *imageWindow = [[UIView alloc] initWithFrame:CGRectMake(30, 0, 30, 30)];
imageWindow.clipsToBounds = YES;
//your image view is the height and width of mainView and x and y is imageWindow - mainView. You can do this manually or put in calculations.
UIImageView *myImage = [[UIImageView alloc] initWithFrame:CGRectMake(imageWindow.frame.origin.x - mainView.frame.origin.x, imageWindow.frame.origin.y - mainView.frame.origin.y, mainView.frame.size.width, mainView.frame.size.height)];
myImage.image = [UIImage imageNamed:@"1024x1024.png"];
[imageWindow addSubview:myImage];
[mainView addSubview:imageWindow];
[self.view addSubview:mainView];
Nhìn qua mã của tôi, tôi không nghĩ rằng mainView
là cần thiết và bạn có thể thêm imageWindow
để self.view trực tiếp.
fillColor tài sản không tìm thấy trên đối tượng của loại 'CALayer *'. Tôi có thiếu nhập không? –
vì vậy, thiết lập màu nền cho một CGColor (không fillColor) đã làm các trick. @Ryan Poolos, chỉnh sửa câu trả lời của bạn và tôi sẽ chấp nhận nó. –
Ồ tôi xin lỗi. 'fillColor' là thuộc tính trên' CAShapeLayer' và tôi thường sử dụng một lớp hình dạng cho mặt nạ của mình. Người bị thói quen chi phối cuộc sống hàng ngày. : p –