2016-04-06 12 views
9

Vorrei dare effetto ombra come carta simile all'immagine nel mio app iOSCome dare ombra come carta in iOS

enter image description here

ho bisogno di questo sul UITableViewCell l'immagine non funziona per me anche gli spazi tra le celle con effetto ombra

+0

Possibile duplicato del [effetti ombra sulla ImageView in iOS] (http://stackoverflow.com/questions/27222595/shadow -effects-on-imageview-in-ios) –

+0

Questo è il Santo Graal nelle app iOS: D – Petar

+0

@Tarun - come è stata implementata la vista tabella "Stile scheda" Celle? –

risposta

9

Utilizzare una vista contenitore nella cella della vista tabella e assegnare tag dire 99. Mantenere l'altezza della cella un po 'più grande della carta (vista Contenitore).

e dare ombra alla vista carta

UIView* shadowView = [cell viewWithTag:99]; 
shadowView.backgroundColor=[UIColor colorWithRed:228.0/255.0 green:228.0/255.0 blue:228.0/255.0 alpha:0.5]; 
[shadowView.layer setCornerRadius:5.0f]; 
[shadowView.layer setBorderColor:[UIColor lightGrayColor].CGColor]; 
[shadowView.layer setBorderWidth:0.2f]; 
[shadowView.layer setShadowColor:[UIColor colorWithRed:225.0/255.0 green:228.0/255.0 blue:228.0/255.0 alpha:1.0].CGColor]; 
[shadowView.layer setShadowOpacity:1.0]; 
[shadowView.layer setShadowRadius:5.0]; 
[shadowView.layer setShadowOffset:CGSizeMake(5.0f, 5.0f)]; 
+0

Cosa succede se la vista con il tag 99 non esiste. Spiegare la risposta –

+0

Se non si desidera utilizzare tag, è possibile creare celle personalizzate e utilizzare le proprietà o utilizzare IBOutlets, probabilmente è necessario definire UITableViewCell personalizzato, quindi –

1

Forse qualcuno ha bisogno versione Swift

func setCardView(view : UIView){ 

     view.layer.masksToBounds = false 
     view.layer.shadowOffset = CGSizeMake(0, 0); 
     view.layer.cornerRadius = 1; 
     view.layer.shadowRadius = 1; 
     view.layer.shadowOpacity = 0.5; 

    } 
+0

Controllare questo tutorial https://www.youtube.com/ watch? v = ZEuoaTF1bok –

1

Si può dare effetto ombra utilizzando questo codice ...

UIView *viewTemp= (UIView *)view; 
viewTemp.layer.shadowColor = [UIColor darkGrayColor].CGColor; 
viewTemp.layer.shadowOffset = CGSizeMake(0, 2); 
viewTemp.layer.shadowOpacity = 0.8; 
viewTemp.layer.shadowRadius = 3; 
viewTemp.layer.masksToBounds = NO; 
1

Una soluzione improvvisata su swift 3.0:

extension UIView { 

func setCardView(view : UIView){ 

    view.layer.cornerRadius = 5.0 
    view.layer.borderColor = UIColor.clear.cgColor 
    view.layer.borderWidth = 5.0 
    view.layer.shadowOpacity = 0.5 
    view.layer.shadowColor = UIColor.lightGray.cgColor 
    view.layer.shadowRadius = 5.0 
    view.layer.shadowOffset = CGSize(width:5, height: 5) 
    view.layer.masksToBounds = true 

} 
} 

Usage:

Su cellForRowAt indexPath:

var cell = UITableViewCell() 

cell.contentView.setCardView(view: cell.contentView) 
+3

Perché è necessario passare il parametro di visualizzazione? Non si può fare riferimento a se stessi? – 4bottiglie

+0

Questo può essere usato per qualsiasi UIView. Se è per sé, non abbiamo bisogno di usare l'estensione. Basta usare il codice così com'è. o self.view.setCardView (visualizza: self.view) –