Qualcuno sa come aggiungere una sfumatura al fondo di una uitableviewcell o della vista a fotogrammi come l'immagine mostrata qui sotto?Aggiungi sfumatura sfumatura nella parte inferiore di uitableviewcell/uiimageview
risposta
Aggiungi questa classe nel progetto (swift):
class UIGradientImageView: UIImageView {
let myGradientLayer: CAGradientLayer
override init?(frame: CGRect){
myGradientLayer = CAGradientLayer()
super.init(frame: frame)
self.setup()
addGradientLayer()
}
func addGradientLayer(){
if myGradientLayer.superlayer == nil{
self.layer.addSublayer(myGradientLayer)
}
}
required init(coder aDecoder: NSCoder){
myGradientLayer = CAGradientLayer()
super.init(coder: aDecoder)
self.setup()
addGradientLayer()
}
func getColors() -> [CGColorRef] {
return [UIColor.clearColor().CGColor, UIColor(red: 0, green: 0, blue: 0, alpha: 0.5).CGColor]
}
func getLocations() -> [CGFloat]{
return [0.5, 0.9]
}
func setup() {
myGradientLayer.startPoint = CGPoint(x: 0.5, y: 0)
myGradientLayer.endPoint = CGPoint(x: 0.5, y: 1)
let colors = getColors()
myGradientLayer.colors = colors
myGradientLayer.opaque = false
myGradientLayer.locations = getLocations()
}
override func layoutSubviews() {
super.layoutSubviews()
myGradientLayer.frame = self.layer.bounds
}
}
UPDATE: soluzione tradotto Objective-C. Crediti per @SleepsOnNewspapers.
#import "UIGradientImageView.h"
@interface UIGradientImageView()
@property (nonatomic, strong) CAGradientLayer *myGradientLayer;
@end
@implementation UIGradientImageView
-(instancetype)initWithFrame:(CGRect)frame{
if(self){
self = [super initWithFrame:frame];
self.myGradientLayer = [[CAGradientLayer alloc]init];
[self setup];
[self addGradientLayer];
}
return self;
}
-(instancetype)initWithCoder:(NSCoder *)aDecoder{
if(self){
self = [super initWithCoder:aDecoder];
self.myGradientLayer = [[CAGradientLayer alloc]init];
[self setup];
[self addGradientLayer];
}
return self;
}
-(void)addGradientLayer{
if (self.myGradientLayer.superlayer == nil) {
[self.layer addSublayer:self.myGradientLayer];
}
}
Fai la tua classe UIImageView
sul storyboard essere questo uno invece di default.
qualsiasi differenza tra questo e CGGradientLayer? Inoltre è l'implementazione di questo molto diverso nell'obiettivo c? – SleepsOnNewspapers
.. potrebbe essere simile. Basta tradurre da rapido a Objective-C, tutto è disponibile. –
questo codice non funzionerà. Non tiene conto del fatto che uitableviewcells viene ridisegnato – SleepsOnNewspapers
Creare un CAGradientLayer con zona trasparente e traslucida. Quindi imposta il contenuto della cella Visualizza la maschera del livello a questo livello di sfumatura. – Sandeep