بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
قرار دادن رنگ گرادیان برای ImageView
سلام.. وقت بخیر
من میخوام یک پس زمینه گرادیان برای ImageView قرار بدم.. بطوری که رنگ پس زمینه گرادیان باشه و عکس هم نشون داده بشه.. کدهایی که تو اینترنت دیدم مثل این گرادیان رو روی عکس قرار میده به طوری که دیگه عکس پیدا نیست..کسی راهی داره؟؟
class ImageViewWithGradient: UIImageView
{
let myGradientLayer: CAGradientLayer
override init(frame: CGRect)
{
myGradientLayer = CAGradientLayer()
super.init(frame: frame)
self.setup()
}
required init(coder aDecoder: NSCoder)
{
myGradientLayer = CAGradientLayer()
super.init(coder: aDecoder)!
self.setup()
}
func setup()
{
myGradientLayer.startPoint = CGPoint(x: 0, y: 0)
myGradientLayer.endPoint = CGPoint(x: 1, y: 1)
let colors: [CGColorRef] = [
UIColor.clearColor().CGColor,
UIColor(red: 1, green: 0, blue: 0, alpha: 0.3).CGColor,
UIColor(red: 1, green: 0, blue: 1, alpha: 0.5).CGColor,
UIColor(red: 0, green: 0, blue: 1, alpha: 0.3).CGColor,
UIColor.clearColor().CGColor ]
myGradientLayer.colors = colors
myGradientLayer.opaque = false
myGradientLayer.locations = [0.0, 0.3, 0.5, 0.7, 1.0]
self.layer.addSublayer(myGradientLayer)
}
override func layoutSubviews()
{
myGradientLayer.frame = self.layer.bounds
}
}
0
0
کسی نیست ؟؟؟؟؟؟؟ (8 سال پیش)
0
0
چرا کسی پاسخگو نیست؟ (8 سال پیش)
+2
0
به این علت که متد Setup بعد از init صدا زده شده . (8 سال پیش)
0
0
جا به جا میکنم دستورات رو به خطا بر میخورم...
Use of 'self' in method call 'setup' before super.init initializes self (8 سال پیش)
برای این سوال 1 پاسخ وجود دارد.
پاسخ به سوال
کاشی زاده
8 سال پیش
+1
0
کد هاتون رو به شکل زیر تغییر بدید و به جای ایجاد یک ImageView یک View سفارشی بسازید :
@IBDesignable class CustomImageView: UIView {
let myGradientLayer: CAGradientLayer!
let imageView: UIImageView = UIImageView()
@IBInspectable var image: UIImage! {
didSet {
imageView.image = image
}
}
public override init(frame: CGRect) {
myGradientLayer = CAGradientLayer()
super.init(frame: frame)
}
required init?(coder aDecoder: NSCoder) {
myGradientLayer = CAGradientLayer()
super.init(coder: aDecoder)
initializer()
}
func initializer() {
myGradientLayer.startPoint = CGPoint(x: 0, y: 0)
myGradientLayer.endPoint = CGPoint(x: 1, y: 1)
let colors: [CGColor] = [
UIColor.clear.cgColor,
UIColor(red: 1, green: 0, blue: 0, alpha: 0.8).cgColor,
UIColor(red: 1, green: 0, blue: 1, alpha: 0.8).cgColor,
UIColor(red: 0, green: 0, blue: 1, alpha: 0.8).cgColor,
UIColor.clear.cgColor ]
myGradientLayer.colors = colors
myGradientLayer.isOpaque = false
myGradientLayer.locations = [0.0, 0.3, 0.5, 0.7, 1.0]
self.layer.addSublayer(myGradientLayer)
self.addSubview(imageView)
}
override func layoutSubviews(){
myGradientLayer.frame = self.layer.bounds
imageView.frame = self.layer.bounds
}
}
ممنون.. این جواب میده ولی واسه اینکه اندازه عکس اندازه مشخص شده باشه کدهای زیر رو اضافه کردم ولی جواب نمیده :
let imageView: UIImageView = UIImageView(frame: CGRectMake(0, 0, 80, 48))
@IBInspectable var image: UIImage! {
didSet {
imageView.contentMode = UIViewContentMode.ScaleAspectFit
imageView.image = image
}
}
(8 سال پیش)
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .