gpt4 book ai didi

ios - UIView 未在drawRect 中设置背景颜色

转载 作者:行者123 更新时间:2023-11-29 03:49:27 25 4
gpt4 key购买 nike

我创建了一个 UIView 的子类。在绘制矩形中,我应该绘制一个橙色矩形。但它显示为黑色。

在我的自定义类中:

#import "testRect.h"

@implementation testRect

- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {

}
return self;
}


- (void)drawRect:(CGRect)rect
{
//// Color Declarations
UIColor* strokeColor = [UIColor colorWithRed: 0 green: 0 blue: 0 alpha: 1];
UIColor* fillColor2 = [UIColor colorWithRed: 0.886 green: 0.59 blue: 0 alpha: 1];

//// Rectangle Drawing
UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect: CGRectMake(26.5, 171.5, 265, 139)];
[fillColor2 setFill];
[rectanglePath fill];
[strokeColor setStroke];
rectanglePath.lineWidth = 1;
[rectanglePath stroke];
}

还有我的 View Controller

#import "ViewController.h"
#import "testRect.h"

@interface ViewController ()
@end

@implementation ViewController

- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view, typically from a nib.

testRect *test = [[testRect alloc] initWithFrame:CGRectMake(10, 10, 265, 139)];
[self.view addSubview:test];

}

- (void)didReceiveMemoryWarning
{
[super didReceiveMemoryWarning];
// Dispose of any resources that can be recreated.
}


@end

最佳答案

您的drawRect:方法中使用的CGRect不正确。您需要一个相对于 View 的CGRect。这意味着原点将为 0,0。此外,应该在运行时根据 View 的边界计算矩形。不要将其硬编码到 drawRect: 中。无论使用什么框架来创建 View ,这都将使代码正常工作。

您现在使用的矩形(在drawRect:中)的y原点为171.5,但 View 的高度仅为139。因此您所做的所有绘图都在 View 之外。这就是为什么它看起来是黑色的。

您可能想要:

CGRect bounds = self.bounds;
UIBezierPath* rectanglePath = [UIBezierPath bezierPathWithRect:bounds];

关于ios - UIView 未在drawRect 中设置背景颜色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17257622/

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