stu*_*pix 2 gradient custom-controls uibutton ios ios6
我遇到了奇怪的行为.我正在使用我在控制器中设置的自定义样式按钮:
- (void)viewDidLoad
{
[super viewDidLoad];
[self.signOutButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal];
[self.signOutButton setTitleColor:[UIColor redColor] forState:UIControlStateHighlighted];
CAGradientLayer *btnGradient = [CAGradientLayer layer];
btnGradient.frame = self.signOutButton.bounds;
btnGradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:102.0f / 255.0f green:102.0f / 255.0f blue:102.0f / 255.0f alpha:1.0f] CGColor],
(id)[[UIColor colorWithRed:51.0f / 255.0f green:51.0f / 255.0f blue:51.0f / 255.0f alpha:1.0f] CGColor],
nil];
[self.signOutButton.layer insertSublayer:btnGradient atIndex:0];
}
Run Code Online (Sandbox Code Playgroud)
它在iOS 5中运行正常.但是如果我在iOS 6中使用启用的Autolayout for Storyboard构建这个,那么我的风格中的渐变消失/变得透明(但标题仍然可见).
如果我禁用自动布局 - 渐变回来了.有人可以用autolayout解释这种行为吗?
jrt*_*ton 10
在viewDidLoad中,在autolayout下,您的视图还没有框架,因此您要使图层具有框架CGRectZero.
您需要将此代码或至少是设置渐变图层框架的部分移动到viewDidLayoutSubviews或类似.