I want to have rounded corners and shadow on a UIBarButtonItem .
UIButton *useButton = [UIButton buttonWithType:UIButtonTypeCustom];
Then I try to set the shadows and rounded corners:
useButton.layer.masksToBounds = NO; useButton.layer.cornerRadius = 4; useButton.layer.shadowOffset = CGSizeMake(0, 1.5); useButton.layer.shadowRadius = 0.5; useButton.layer.shadowOpacity = 1.0; useButton.layer.shadowColor = [BSTCMColorUtility colorFromHexString:@"#AFAFAF"].CGColor;
Finally, I do a UIBarButtonItem :
UIBarButtonItem *useItem = [[UIBarButtonItem alloc] initWithCustomView:useButton]; [self.navigationItem setRightBarButtonItems:@[useItem]];
I do not have rounded corners, but I get a shadow.
If I add:
useButton.clipsToBounds = YES;
and / or
useButton.layer.masksToBounds = YES;
I get rounded corners, but not shadows. So I thought I'd try to add a sublayer.
CALayer *useButtonShadowLayer = [CALayer new]; useButtonShadowLayer.frame = useButton.frame; useButtonShadowLayer.cornerRadius = 4; useButtonShadowLayer.backgroundColor = [UIColor whiteColor].CGColor; useButtonShadowLayer.shadowOffset = CGSizeMake(0, 1.5); useButtonShadowLayer.shadowRadius = 0.5; useButtonShadowLayer.shadowOpacity = 1.0; useButtonShadowLayer.shadowColor = [BSTCMColorUtility colorFromHexString:@"#AFAFAF"].CGColor; useButton.layer.cornerRadius = 4; useButton.layer.masksToBounds = YES; UIView *parent = useButton.superview; [parent.layer insertSublayer:useButtonShadowLayer below:useButton.layer];
It does not seem to work, I do not see a shadow. I get rounded corners.
Can't have rounded corners & shadows on a UIBarButtonItem / UIButton ?
ios objective-c cocoa-touch uibutton
Johannes
source share