2010-10-26 3 views
2

У меня есть два UIViewControllers А и В, и они добавляются в качестве подвидов в AppDelegate с B на вершине A.Добавление контура тени к UIView, который прошивкой 3.0 совместим

Когда UIButton на B сливают B слайды налево со следующим кодом:

[UIView beginAnimations:nil context:nil]; 
[UIView setAnimationDuration:1.5]; 
[UIView setAnimationCurve:UIViewAnimationCurveEaseInOut]; 
[UIView setAnimationDelegate:self]; 
[UIView setAnimationDidStopSelector:@selector(slideOutFinished)]; 
simonSaysView.view.frame = CGRectMake(40-BView.view.frame.size.width, BView.view.frame.origin.y, BView.view.frame.size.width, BView.view.frame.size.height); 
[UIView commitAnimations]; 

на правом краю я хочу падение 20px тень, но я не могу использовать теневые свойства BView.view.layer.shadow.... потому, что его 3,2/4,0 + только. И производительность анимации ужасна, слайд очень сильно отстает (свободно говорит без тени).

Я думаю, используя пользовательский UIView и делаю некоторые магии в drawRect, но возможно ли это или я могу рисовать только в пределах видимости?

Надеюсь, что некоторые из вас, ребята и девочки, могут мне помочь.

Приветствия objneodude

+0

Использование 'CGContextSetShadow' – tadejsv

ответ

3

решаемые с помощью следующего кода

// Add drop shadow to the view. 
CAGradientLayer *gradientLayer = [CAGradientLayer layer]; 
gradientLayer.frame = CGRectMake(self.view.frame.size.width, 0, 30, self.view.frame.size.height); 
gradientLayer.colors = [NSArray arrayWithObjects: 
         (id)[UIColor blackColor].CGColor, 
         (id)[UIColor clearColor].CGColor, 
         nil]; 
gradientLayer.startPoint = CGPointMake(-2, 0.5); 
gradientLayer.endPoint = CGPointMake(1, 0.5); 
[self.view.layer addSublayer:gradientLayer]; 
0

Я была такая же проблема, после попытки различные идеи, я просто добавил подвид тень цвет (серый) позади UIView мне нужно чтобы получить тень, см. код: (Входит также код для> 3.2.x/4.x.

/*Shaded/rounded borders on subviews*/ 
self.viewOne.layer.cornerRadius = 10; 

self.viewOne.layer.borderColor = [UIColor darkGrayColor].CGColor; 
self.viewOne.layer.borderWidth = 0.8; 

self.viewTwo.layer.cornerRadius = 10; 
self.viewTwo.layer.borderColor = [UIColor darkGrayColor].CGColor; 
self.viewTwo.layer.borderWidth = 0.8; 

self.viewThree.layer.cornerRadius = 10; 
self.viewThree.layer.borderColor = [UIColor darkGrayColor].CGColor; 
self.viewThree.layer.borderWidth = 0.8; 

if (SYSTEM_VERSION_LESS_THAN(@"3.2")) { 
    self.shadowOne.layer.cornerRadius = 10; 
    self.shadowTwo.layer.cornerRadius = 10; 
    self.shadowThree.layer.cornerRadius = 10; 
} 
else{ 
    //Use QuartzCore to make shadows etc. 
    self.viewOne.layer.shadowColor = [[UIColor grayColor] CGColor]; 
    self.viewOne.layer.shadowOffset = CGSizeMake(2, 2); 
    self.viewOne.layer.shadowOpacity = 0.6; 
    self.viewOne.layer.shouldRasterize = YES; 
    self.viewOne.layer.shadowRadius = 2; 

    self.viewTwo.layer.shadowColor = [[UIColor grayColor] CGColor]; 
    self.viewTwo.layer.shadowOffset = CGSizeMake(2, 2); 
    self.viewTwo.layer.shadowOpacity = 0.6; 
    self.viewTwo.layer.shouldRasterize = YES; 
    self.viewTwo.layer.shadowRadius = 2; 

    self.viewThree.layer.shadowColor = [[UIColor grayColor] CGColor]; 
    self.viewThree.layer.shadowOffset = CGSizeMake(2, 2); 
    self.viewThree.layer.shadowOpacity = 0.6; 
    self.viewThree.layer.shouldRasterize = YES; 
    self.viewThree.layer.shadowRadius = 2; 
} 
Смежные вопросы