2016-03-02 3 views
4

Я создаю UIButton похожего на это изображение: enter image description hereUIButton тени слой эффект

Я попробовал его, используя следующий код:

+(void)createShadowOnView:(UIView *)view color:(UIColor *)color width:(CGFloat)width height:(CGFloat)height shadowOpacity:(CGFloat)shadowOpacity andShadowRadius:(CGFloat)radius{ 

    view.layer.masksToBounds = NO; 
    view.layer.shadowColor = color.CGColor; 
    view.layer.shadowOffset = CGSizeMake(width,height); 
    view.layer.shadowOpacity = shadowOpacity; 
    [view.layer setShadowRadius:radius]; 
} 

я смог достичь этого:

enter image description here

Я хочу, чтобы эффект тени на кнопке сохранялся только на нижней части.

Как достичь желаемого эффекта.

+0

проблема не в этом методе, где-то еще один раз проверять –

+0

Как вы рисуете кнопку, кроме тени? Это образ или вы рисуете его с помощью Core Graphics или что-то еще? –

+0

Я создаю его через раскадровку, а затем создавая границу, закругленный угол и тень программно. –

ответ

4

Только с кодом вы пропустили установку цвета фона для своей кнопки регистрации. Используйте этот код,

self.signUpButton.backgroundColor = [UIColor whiteColor]; 
[UIView createShadowOnView:self.signUpButton color:[UIColor lightGrayColor] width:0 height:2 shadowOpacity:0.3 andShadowRadius:0]; 
+0

Да, это сработало. Мило. благодаря –

5

Возможно, вы должны установить фоновый цвет представления, поэтому заголовок не имеет тени, вы можете установить view.layer.shadowOffset для изменения размера тени.

UIButton *customBTn = [UIButton buttonWithType:UIButtonTypeCustom]; 
customBTn.backgroundColor = [UIColor whiteColor]; 
customBTn.frame = CGRectMake(100, 100, 200, 50); 
[customBTn setTitle:@"Sign Up" forState:UIControlStateNormal]; 
[customBTn setTitleColor:[UIColor colorWithRed:1/255.0 green:168/255.0 blue:244/255.0 alpha:1.0] forState:UIControlStateNormal]; 
customBTn.layer.borderColor = [UIColor colorWithRed:1/255.0 green:168/255.0 blue:244/255.0 alpha:1.0].CGColor; 
customBTn.layer.borderWidth = 2; 
customBTn.layer.cornerRadius = 25; 
customBTn.layer.shadowColor = [UIColor lightGrayColor].CGColor; 
customBTn.layer.shadowOffset = CGSizeMake(0,8); 
customBTn.layer.shadowOpacity = 0.9; 
[self.view addSubview:customBTn]; 

Выход: -

enter image description here

+0

Я создал кнопку в раскадровке и уже пробовал это, но дело в том, что я хочу только отбросить тень в нижней строке кнопки не на всей кнопке , Он создается целиком. –

+0

yestday i misread your request (просто сделайте заголовок без тени), если вы хотите, чтобы нижняя строка имела тень, вы можете установить shaowoffset.hope может вам помочь. –

1

Preview:

enter image description here

Код:

UIButton *buttonWithShadow = [UIButton buttonWithType:UIButtonTypeCustom]; 
[buttonWithShadow setFrame:CGRectMake(10.0f, 10.0f, 300.0f, 50.0f)]; 
[buttonWithShadow setTitle:@"SIGN UP" forState:UIControlStateNormal]; 
[buttonWithShadow setTitle:@"SIGN UP" forState:UIControlStateHighlighted]; 
[buttonWithShadow.titleLabel setFont:[UIFont boldSystemFontOfSize:15.0f]]; 
[buttonWithShadow setTitleColor:[UIColor colorWithRed:1.0f/255.0 green:168.0f/255.0 blue:244.0f/255.0 alpha:1.0f] forState:UIControlStateNormal]; 
    [buttonWithShadow setBackgroundColor:[UIColor whiteColor]]; 
[buttonWithShadow.layer setBorderColor:[UIColor colorWithRed:1.0f/255.0 green:168.0f/255.0 blue:244.0f/255.0 alpha:1.0f].CGColor]; 
[buttonWithShadow.layer setBorderWidth:2.0f]; 
[buttonWithShadow.layer setCornerRadius:(buttonWithShadow.frame.size.height/2.0f)]; 
[buttonWithShadow.layer setShadowColor:[UIColor lightGrayColor].CGColor]; 
[buttonWithShadow.layer setShadowOpacity:0.3f]; 
[buttonWithShadow.layer setShadowRadius:0.0f]; 
[buttonWithShadow.layer setShadowOffset:CGSizeMake(0.0f,2.0f)]; 
[buttonWithShadow.layer setMasksToBounds:NO]; 
[self.view addSubview:buttonWithShadow]; 
+0

Спасибо за ваш ответ, но на самом деле я отсутствовал, чтобы установить цвет фона кнопки. –