2012-07-30 13 views
5

Mam ten sam problem jak tutaj odpowiedni link: Can't add a corner radius and a shadowDodaj rogiem do UIImageView i wyświetlacze cień efekt

jeśli kładę maskToBounds = TAK, mam zakręty, ale nie ma cienia Jeśli kładę maskToBounds = NO , Dostaję cień, ale nie ma zaokrąglonych rogów.

Następnie postępowałem zgodnie z instrukcją w powyższym łączu, ustawiając maskToBounds = NIE, "ale raczej ustaw promień narożnika i ustaw ścieżkę beziera cienia zaokrągloną prostokącią. Zachowaj promień dwóch takich samych". Ale potem nie dostaję za rogiem, ani nie dostaję cienia! (tzn. Square Image without Shadow) Czy możesz mi pomóc z tego wyjść? Nie wiem, co zrobiłem źle. Z góry dziękuję.

self.userImageView.backgroundColor = [UIColor redColor]; 
self.userImageView.clipsToBounds = NO; 
self.userImageView.contentMode = UIViewContentModeCenter; 
self.userImageView.layer.masksToBounds = NO; 

self.userImageView.layer.borderWidth = 1; 
self.userImageView.layer.borderColor = [[UIColor grayColor] CGColor]; 

self.userImageView.layer.shadowOpacity = 1; 
self.userImageView.layer.shadowColor = [[UIColor blackColor] CGColor]; 
self.userImageView.layer.shadowRadius = 8.0f; 
self.userImageView.layer.shadowOffset = CGSizeMake(-3, 0); 
self.userImageView.layer.shouldRasterize = YES; 

self.userImageView.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:[self.userImageView bounds] cornerRadius:10.0f] CGPath]; 

[self addSubview:self.userImageView]; 

Odpowiedz

18

Niestety, nie sądzę, UIImageView obsługuje zaokrąglone rogu i cienia w tym samym czasie.

Możesz jednak zrobić cień w super widoku UIImageView.

CGFloat cornerRadius = 3.0 

UIView *container = [[UIView alloc] initWithFrame:aRect]; 
container.layer.shadowOffset = CGSizeMake(0, 0); 
container.layer.shadowOpacity = 0.8; 
container.layer.shadowRadius = 5.0; 
container.layer.shadowColor = [UIColor redColor].CGColor; 
container.layer.shadowPath = [[UIBezierPath bezierPathWithRoundedRect:container.bounds cornerRadius:cornerRadius] CGPath]; 

self.userImageView.layer.cornerRadius = cornerRadius; 
self.userImageView.layer.masksToBounds = YES; 
self.userImageView.frame = container.bounds; 
[container addSubview:self.userImageView]; 
[self addSubview:container]; 
+0

Myślę, że twoje podejście zadziała, spróbuję to wkrótce. Dziękuję za odpowiedź. Minęło sporo czasu odkąd opublikowałem pytanie, byłem bardzo podekscytowany, gdy zobaczyłem odpowiedź. – John

+0

co to jest "aRect"? –

+0

aRect to miejsce, w którym chcesz, aby obraz był widoczny (tzn. Ramka imageView, gdy nie ma pojemnika). –

Powiązane problemy