Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/cocoa/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Can';在iOS6中启用情节提要自动布局时,不执行自定义UIButton_Ios_Uibutton_Ios6_Custom Controls_Gradient - Fatal编程技术网

Can';在iOS6中启用情节提要自动布局时,不执行自定义UIButton

Can';在iOS6中启用情节提要自动布局时,不执行自定义UIButton,ios,uibutton,ios6,custom-controls,gradient,Ios,Uibutton,Ios6,Custom Controls,Gradient,我面临着奇怪的行为。我正在使用我在控制器中设置的自定义样式按钮: -(void)viewDidLoad { [超级视图下载]; [self.signburatton setTitleColor:[UIColor whiteColor]用于状态:UIControlStateNormal]; [self.signburatton setTitleColor:[UIColor redColor]用于状态:UIControlStateHighlighted]; CAGradientLayer*btnGr

我面临着奇怪的行为。我正在使用我在控制器中设置的自定义样式按钮:

-(void)viewDidLoad
{
[超级视图下载];
[self.signburatton setTitleColor:[UIColor whiteColor]用于状态:UIControlStateNormal];
[self.signburatton setTitleColor:[UIColor redColor]用于状态:UIControlStateHighlighted];
CAGradientLayer*btnGradient=[CAGradientLayer层];
btnGradient.frame=self.signexputton.bounds;
btnGradient.colors=[NSArray阵列及其对象:
(id)[[UIColor COLOR WITH RED:102.0f/255.0f green:102.0f/255.0f blue:102.0f/255.0f alpha:1.0f]CGColor],
(id)[[UIColor COLOR WITH RED:51.0f/255.0f green:51.0f/255.0f blue:51.0f/255.0f alpha:1.0f]CGColor],
零];
[self.signburtton.layer insertSublayer:btnGradient atIndex:0];
}
它在iOS 5中工作正常。但如果我在为iOS 6构建时启用了故事板的自动布局,那么我风格中的渐变将消失/变得透明(但标题仍然可见)


如果我禁用自动布局-渐变回来了。有人能用autolayout解释这种行为吗?

在viewDidLoad中,在autolayout下,您的视图还没有框架,因此您正在使层具有一个框架
CGRectZero


您需要将此代码或至少是设置渐变层框架的部分移动到
viewdilayoutsubviews
或类似位置

ViewDidLayoutSubviews在设备的每次旋转时都被调用,因此按钮将刷新其属性。除了使用BOOL标志之类的东西之外,还有其他更有效的方法吗?这会导致性能问题吗?与旋转时发生的其他事情相比,我认为这是相当小的。你可以在设置图层之前检查它的框架。同意,这可能是一个较小的性能影响,但仍然是一个非较小的影响。在我的应用程序上,当它第一次运行时,我设置了一个布尔标志,这样它只会更新一次UI,因为我的用户会到处旋转屏幕,我有几个渐变正在更新。