2013-05-28 4 views
1

Как может охватывающий UIView иметь одновременно и тень, и угол радиуса?iOS6 Добавить тень в контейнер UIView с угловым радиусом

Я попробовал другие решения предложили на SO несколько раз, но, к сожалению, не похоже на работу для iOS6 (или по крайней мере не для меня)

Так я думал, что я мог бы отправить это, так что iOS6 решение можно найти.

У меня есть контейнер UIView который содержит два подвидов

- a custom UIImageView 
- a custom UIView 

Я хотел бы весь UIView, чтобы иметь угловой радиус 2,5, но я бы также как и UIView, чтобы иметь тень. Однако до сих пор я получаю только 1 из этих двух желаний, но никогда в обоих случаях.

Вот мой код, у меня разные версии его с разными попытками с SO решениями, но это только одна из моих версий.

self.layer.shouldRasterize = YES; 
    self.layer.rasterizationScale = [UIScreen mainScreen].scale; 
    self.layer.cornerRadius = 2.5; 
    self.layer.masksToBounds = YES; 
    self.layer.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.1].CGColor; //0.1 
    self.layer.shadowPath = [UIBezierPath bezierPathWithRect:self.bounds].CGPath; 
    self.layer.shadowOpacity = 1.0; 
    self.layer.shadowRadius = 3.0; 

^здесь само является содержащий пользовательские UIView с двумя подобозрения описано выше

Кто-нибудь знает из решения iOS6 этой проблемы?


UPDATE

Таким образом, мне не нужен цвет границы, так что я не добавлял, что, когда я увидел решение, но на этот раз я добавил, что, используя решение в комментариях ниже, и кажется, что UIView округляется, но я действительно хочу, чтобы объединенные UIImageView и UIView были округлены.

Таким образом, UIImageView находится сверху, а UIView находится внизу.

Итак, как мне получить закругленную вершину UIImageView, и только нижнюю часть UIView округляется.

Спасибо.

Примечание: тени работают как один объект целиком, но радиус угла не работает как один объект целиком?

+0

Вы посмотрели на этот ответ? http://stackoverflow.com/questions/4754392/uiview-with-rounded-corners-and-drop-shadow – jfuellert

+0

Да, ни одно из решений этой страницы не работало для меня, к сожалению @jfuellert – GangstaGraham

+0

@jfuellert См. обновление, любое мысли об этом? – GangstaGraham

ответ

5

Я понял.

self.layer.shouldRasterize = YES; 
self.layer.rasterizationScale = [UIScreen mainScreen].scale; 
self.layer.shadowColor = [UIColor colorWithWhite:0.0 alpha:0.8].CGColor; 
self.layer.shadowPath = [UIBezierPath bezierPathWithRoundedRect:self.layer.bounds cornerRadius:self.layer.cornerRadius].CGPath; 
self.layer.shadowOpacity = 1.0; 
self.layer.shadowRadius = 3.0; 

UIView *container = [[UIView alloc] initWithFrame:CGRectMake(0, 0, frame.size.width, frame.size.height)]; 
[self addSubview:container]; 

[container addSubview:self.someCustomUIView]; 
[container addSubview:self.someCustomImageView]; 

container.layer.cornerRadius = 2.5; 
container.layer.masksToBounds = YES; 

Так в основном:

  1. Я установил тень главного UIView.
  2. Я создал контейнер подвид, который содержит два других подвидов
  3. я установил радиус скругления углов контейнера подвид
  4. Voila! Оно работает!
  5. Надеюсь, это сработает для других людей, у которых есть несколько подзонов в одном UIView
  6. Я хочу поблагодарить всех за помощь. :)
2

Я думаю, вы должны изменить эту строку кода:

self.layer.masksToBounds = YES; 

на это один

self.layer.masksToBounds = NO; 

Если вы установите masksToBounds в YES, то вы не увидите ничего, что выходит за пределы границы обзора, и это имеет место с тенью.

Этот код из моего текущего проекта (iOS 6), и он отлично работает. Я вижу как закругленные углы, так и тень.

self.layer.masksToBounds = NO; 
self.layer.cornerRadius = 5.0; 
self.layer.shadowColor = [UIColor blackColor].CGColor; 
self.layer.shadowOffset = CGSizeMake(0, -1); 
self.layer.shadowOpacity = 0.6; 

UIBezierPath *shadowPath = [UIBezierPath bezierPathWithRect: self.layer.bounds]; 
self.layer.shadowPath = shadowPath.CGPath; 
+0

Углы не закруглены с этим подходом (или, по крайней мере, с моим UIView по какой-то причине) @MarcinKuptel – GangstaGraham

+0

Даже если вы установите shadowRadius? –

+0

Да, я ценю помощь, хотя, я буду продолжать пытаться, я не уверен, что не так с моим UIView, но он, похоже, не работает. Я чувствую, что проблема заключается в охвате двух подзонов, чем в главном UIView – GangstaGraham

Смежные вопросы