gpt4 book ai didi

ios背景颜色仅出现在横向模式下的一半屏幕上

转载 作者:行者123 更新时间:2023-11-28 21:47:08 25 4
gpt4 key购买 nike

我目前正在使用以下方法来设置我的 View 的背景颜色

 //Set the background color
CAGradientLayer *bgLayer = [BackgroundLayer blueGradient]; <---Calls method below
bgLayer.frame = self.view.bounds;
//self.view.layer.backgroundColor = [UIColor redColor].CGColor;
[self.view.layer insertSublayer:bgLayer atIndex:0];

这就是它获取渐变颜色的方式——这就是上面调用的方法

@implementation BackgroundLayer
//Blue gradient background
+ (CAGradientLayer*) blueGradient {

UIColor *colorOne = [UIColor colorWithRed:(120/255.0) green:(135/255.0) blue:(150/255.0) alpha:1.0];
UIColor *colorTwo = [UIColor colorWithRed:(57/255.0) green:(79/255.0) blue:(96/255.0) alpha:1.0];

NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil];
NSNumber *stopOne = [NSNumber numberWithFloat:0.0];
NSNumber *stopTwo = [NSNumber numberWithFloat:1.0];

NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil];

CAGradientLayer *headerLayer = [CAGradientLayer layer];
headerLayer.colors = colors;
headerLayer.locations = locations;

return headerLayer;
}

@end

现在在肖像模式下背景看起来很好。然而在横向模式下,它只覆盖了一半的屏幕,另一半是白色的。这是为什么 ?我该如何解决。我尝试了以下方法来改变颜色

self.view.layer.backgroundColor = [UIColor redColor].CGColor;

以上内容在横向和纵向模式下都可以正常工作,但它不是渐变。关于如何使渐变起作用的任何想法?

最佳答案

简单方法:

只需将其添加到您的 View Controller

-(void)viewDidLayoutSubviews{
self.bgLayer.frame = self.view.bounds;
}

更好的方法:

作为here描述一下,你可以这样做。我用我的Xcode测试它,它工作正常。

  1. 定义背景 View 以管理大小

.h文件

    #import <UIKit/UIKit.h>

@interface BackgrundView : UIView

@end

.m文件

    #import "BackgrundView.h"      
@interface BackgrundView()
@end
@implementation BackgrundView
+(Class)layerClass{
return [CAGradientLayer class];
}
@end

2 设置你想要的

#import "ViewController.h"
#import "BackgrundView.h"
@interface ViewController ()
@property BackgrundView * backgroundview;
@end

@implementation ViewController

- (void)viewDidLoad {
[super viewDidLoad];
self.backgroundview = [[BackgrundView alloc] initWithFrame:self.view.frame];
self.backgroundview.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
[self.view addSubview:self.backgroundview];
UIColor *colorOne = [UIColor colorWithRed:(120/255.0) green:(135/255.0) blue:(150/255.0) alpha:1.0];
UIColor *colorTwo = [UIColor colorWithRed:(57/255.0) green:(79/255.0) blue:(96/255.0) alpha:1.0];

NSArray *colors = [NSArray arrayWithObjects:(id)colorOne.CGColor, colorTwo.CGColor, nil];
NSNumber *stopOne = [NSNumber numberWithFloat:0.0];
NSNumber *stopTwo = [NSNumber numberWithFloat:1.0];

NSArray *locations = [NSArray arrayWithObjects:stopOne, stopTwo, nil];
CAGradientLayer * graintLayer = (CAGradientLayer *)self.backgroundview.layer;
graintLayer.colors = colors;
graintLayer.locations = locations;
}

关于ios背景颜色仅出现在横向模式下的一半屏幕上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29693250/

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