У мене є UIImageView, до якого я хочу додати тінь. Я хотів би, щоб яблуко мало це як властивість, але їм доводиться ускладнювати багато речей для нас, програмістів, тому мені потрібно задати це питання.
У мене є UIImageView, до якого я хочу додати тінь. Я хотів би, щоб яблуко мало це як властивість, але їм доводиться ускладнювати багато речей для нас, програмістів, тому мені потрібно задати це питання.
Відповіді:
Існує кращий і простіший спосіб зробити це. UIImageView успадковує від UIView, тому він має властивість шару. Ви можете отримати доступ до властивостей тіні шару та bam, ви отримали тінь.
Якщо у вас є UIImageView як IBOutlet для файлу nib, ви можете просто реалізувати awakeFromNib, наприклад
Завдання-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;
}
Не забувайте це робити #import "QuartzCore/CALayer.h"
Для Swift ви можете зробити це кількома шляхами. Створіть розширення класу, підклас або екземпляр imageView. У будь-якому випадку, процес однаковий при зміні властивості тіней шарів.
Стрімкий 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
}
imageView.clipsToBounds = NO;
інакше тінь буде відірвана.
Найпростіше, що потрібно зробити, це додати шар тіні до подання зображення:
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];
Переконайтеся, що для перегляду вимкнено функцію "Підзаголовки кліпів"
Швидке рішення з розширенням. Підкласифікація не потрібна. Дзвінок myImage.addShadow()
від viewDidLoad()
. Це повинно працювати для UIView
і 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
}
}
крім цього, якщо ви хочете зробити білу межу та тінь, ви можете використовувати цей код:
//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];