Tôi có UIImageView mà tôi muốn thêm bóng sau. Tôi ước rằng táo đã có tài sản đó nhưng họ phải làm rất nhiều thứ khó khăn cho chúng tôi vì vậy tôi cần đặt câu hỏi này.Cách tốt nhất để tạo bóng tối đằng sau UIImageView
Trả lời
Có một cách tốt hơn và dễ dàng hơn để làm điều này. UIImageView kế thừa từ UIView để nó có thuộc tính lớp. Bạn có thể truy cập các thuộc tính shadow của layer và bam, bạn có một shadow.
Nếu bạn có UIImageView dưới dạng IBOutlet thành tệp nib, bạn chỉ có thể triển khai awakeFromNib ví dụ:
Objective-C
- (void)awakeFromNib {
imageView.layer.shadowColor = [UIColor purpleColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
imageView.clipsToBounds = NO;
}
Đừng quên #import "QuartzCore/CALayer.h"
Đối với Swift, bạn có thể đi về nó theo nhiều cách. Tạo một lớp mở rộng, phân lớp hoặc một cá thể imageView. Cho dù cách nào, quá trình này cũng giống nhau trong việc sửa đổi thuộc tính shadow của layer.
Swift 3
override func awakeFromNib() {
super.awakeFromNib()
imageView.layer.shadowColor = UIColor.purple.cgColor
imageView.layer.shadowOffset = CGSize(width: 0, height: 1)
imageView.layer.shadowOpacity = 1
imageView.layer.shadowRadius = 1.0
imageView.clipsToBounds = false
}
Điều đơn giản nhất để làm là thêm một lớp bóng tối để xem hình ảnh của bạn:
CALayer *layer = [CALayer layer];
CGRect bounds = self.bounds;
layer.bounds = bounds;
layer.position = CGPointMake(bounds.size.width/2 + 3, bounds.size.height/2 + 3);
layer.backgroundColor = [UIColor colorWithWhite: 0.25 alpha: 0.55].CGColor;
layer.zPosition = -5;
[self.layer addSublayer: layer];
Hãy chắc chắn "Clip subviews" bị tắt cho xem
tại sao bạn tạo một giới hạn CGRect * khi bạn chỉ có thể đặt giới hạn của lớp thành self.bounds? Và cái bóng đi vào đâu? – Jaba
Tôi tạo một biến tạm thời để dễ đọc; gõ self.bounds dài hơn một chút so với giới hạn, và làm cho mã ít dễ đọc hơn. Lớp này là cái bóng. Tất nhiên, điều này giả định rằng bạn đã có một hình vuông; nếu bạn đang làm hình ảnh không phải hình chữ nhật, bạn sẽ phải sử dụng mặt nạ hình ảnh tùy chỉnh. –
Tôi cũng muốn nó bị mờ và tôi không biết làm thế nào tôi sẽ làm điều đó. Xin giúp đỡ! – Jaba
trong thêm vào đó, nếu bạn muốn làm cho đường viền màu trắng và bóng tối, bạn có thể sử dụng mã rằng:
//shadow part
imageView.layer.shadowColor = [UIColor blackColor].CGColor;
imageView.layer.shadowOffset = CGSizeMake(0, 1);
imageView.layer.shadowOpacity = 1;
imageView.layer.shadowRadius = 1.0;
//white border part
[imageView.layer setBorderColor: [[UIColor whiteColor] CGColor]];
[imageView.layer setBorderWidth: 2.0];
Nhưng trong trường hợp này, bạn làm cách nào để tạo phần bóng của thuộc tính .image, giả sử, lưu hoặc hiển thị hình ảnh đó ở một nơi khác? – alejandrormz
Bạn không thể. Bạn không chỉnh sửa hình ảnh, bạn đang sử dụng nó để hiển thị. Để thực sự chỉnh sửa dữ liệu bitmap là * nhiều * phức tạp hơn. Hãy xem xét chỉ đơn giản là adorning hình ảnh ở khắp mọi nơi bạn hiển thị nó như bạn thường không muốn xử lý hình ảnh để thêm các loại hiệu ứng, trừ khi bạn làm như vậy trong một kết thúc trở lại mà xử lý chúng theo lô. – Tim
UIView thiết shadowlayer
và addSubview: imageView của bạn
Bạn có thể giải thích về điều đó không? Cảm ơn! –
Giải pháp Swift với phần mở rộng. Subclassing là không cần thiết. Gọi myImage.addShadow()
từ viewDidLoad()
. Điều này sẽ hoạt động cho UIView
và UIImageView
.
extension UIView {
func addShadow() {
layer.shadowColor = UIColor.black.cgColor
layer.shadowOffset = CGSize(width: 0, height: 0)
layer.shadowOpacity = 0.5
layer.shadowRadius = 5
clipsToBounds = false
}
}
- 1. cách làm tối UIImageView
- 2. Cách tốt nhất để thực hiện loại đổ bóng này?
- 3. OpenGL: Cách dễ nhất để tạo bóng tối và ánh sáng?
- 4. Cách nhanh nhất để tạo bóng trên iOS?
- 5. Cách tạo chú thích tùy chỉnh có mã đằng sau
- 6. Cách tốt nhất để tạo báo cáo trong ASP.NET MVC
- 7. Cách tốt nhất để vẽ vòng tròn trên đầu trang UIImageView IOS
- 8. Làm cách nào để tạo một tối hơn UIImageView khi được đánh dấu (nhấn)?
- 9. Cách tốt nhất để tạo JFrame
- 10. tạo UIImageView
- 11. Bóng tối Three.js - cách cải thiện?
- 12. Cách hiệu quả nhất để thêm phản chiếu vào UIImageView
- 13. Loại bỏ bóng tối Kinect
- 14. Cách tốt nhất để tìm tối đa và tối thiểu của hai giá trị
- 15. Tạo UIImage mới bằng cách thêm bóng tối để UIImage hiện
- 16. Thuật toán đằng sau việc tạo ra tàu quét mìn
- 17. Tạo Url trong MVC từ Mã Đằng sau
- 18. Toán đằng sau Bump (ing)?
- 19. WebDAV đằng sau proxy ngược
- 20. Cách tốt nhất để phát hiện NaN trong bóng đổ OpenGL
- 21. Làm cách nào để thêm UIImage vào UIImageView một cách có lập trình, sau đó thêm UIImageView vào UIView khác?
- 22. Làm cách nào để tạo bóng tối giá rẻ trong OpenGL?
- 23. Lấy nguồn đằng sau AST
- 24. Cách tốt nhất để tạo ra một hệ thống "hashtag"
- 25. Cách hiệu quả nhất để tạo hệ thống bóng đèn diễn đàn (chưa đọc) là gì?
- 26. Cách tốt nhất để tạo ra enum của chuỗi?
- 27. Cách tốt nhất để tạo tập lệnh SQL Server rollback?
- 28. Giải thích tốt về cách thức hoạt động của đường ray đằng sau hậu trường?
- 29. Cách tốt nhất để tạo dấu thời gian di chuyển
- 30. Cách tốt nhất để trống chuỗi?
Có thể, bạn muốn sử dụng chức năng vẽ Bản đồ lõi để vẽ bóng. –
Những câu hỏi này rất giống với câu hỏi của bạn: http://stackoverflow.com/questions/962827/uiimage-shadow, http://stackoverflow.com/questions/1943087/i-am-trying-to-add-a-drop -shadow-to-a-uimageview –