gpt4 book ai didi

iOS:旋转 View ,按钮的渐变层不会自动调整大小

转载 作者:行者123 更新时间:2023-12-01 16:55:46 25 4
gpt4 key购买 nike

我有一个名为 nextbutton 的 UIButton在 View 中。我已经设置了autoresizing Interface Builder 中的这个按钮.在 viewDidLoad ,我调用这个方法来设置这个按钮的渐变。 gradientLayer非常适合 nextbutton但是,在应用程序的纵向模式下,它不在横向模式下。对此有何建议?多谢。

-(void)toSetGradientNextButtons{
CAGradientLayer* gradientLayer = [[CAGradientLayer alloc] init];
[gradientLayer setBounds:[nextbutton bounds]];
[gradientLayer setPosition:CGPointMake([nextbutton bounds].size.width/2,[nextbutton bounds].size.height/2)];

[gradientLayer setColors:[NSArray arrayWithObjects:(id)[[UIColor blueColor] CGColor],(id)[[UIColor cyanColor] CGColor], nil]];
[[nextbutton layer] insertSublayer:gradientLayer atIndex:0];
[gradientLayer release];
}

最佳答案

我只是在解决完全相同的问题。在我的代码中,在 viewWillAppear 和 viewDidLayoutSubviews 上调用了以下方法。

首先,我正在检查按钮是否已经具有该层(来自之前的 UI 状态和/或旋转)。如果是,则删除自定义层。
然后它插入渐变层,同时使用自定义名称对其进行标记,这样一来就可以轻松找到它。

- (void)setupGradientOnLayoutSubviews
{
// First, we'll remove old custom gradient layer if present (e.g. on rotation)
for (__strong CALayer *layer in [[[self button] layer] sublayers]) {
if ([[layer name] isEqualToString: @"myCustomGradient"] == YES) {
[layer removeFromSuperlayer];
break;
}
}

// Configure the gradient
_gradientLayer = [[CAGradientLayer alloc] init];
_gradientLayer.frame = CGRectMake(0, 0, self.button.frame.size.width, self.button.frame.size.height);
_gradientLayer.masksToBounds = NO;
_gradientLayer.cornerRadius = 5.0;
_gradientLayer.colors = [NSArray arrayWithObjects:(id)[RGB(205, 6, 106) CGColor], (id)[RGB(147, 2, 76) CGColor], nil];
_gradientLayer.borderColor = [RGB(193, 5, 99) CGColor];
_gradientLayer.borderWidth = 1.0f;

_gradientLayer.shadowColor = [[UIColor blackColor] CGColor];
_gradientLayer.shadowOffset = CGSizeMake(1,1);
_gradientLayer.shadowRadius = 2;
_gradientLayer.shadowOpacity = 0.2;
_gradientLayer.name = @"myCustomGradient";

// Add the gradient layer
[self.button.layer insertSublayer:_gradientLayer atIndex:0];
}

关于iOS:旋转 View ,按钮的渐变层不会自动调整大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11938794/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com