gpt4 book ai didi

ios - 在 iOS 上,drawRect 不能在 View 边界之外绘制?

转载 作者:IT王子 更新时间:2023-10-29 08:06:05 24 4
gpt4 key购买 nike

我认为从某个角度来看,对于 OS X,并且对于 iOS 总是正确的,内容可以出现在 View 的边界之外吗? (对于 UIView)但是,如果我创建一个全新的单 View 应用程序,并创建一个 UIView 子类的 MyView 类,并实现其 drawRect:

- (void)drawRect:(CGRect)rect
{
// Drawing code
UIBezierPath *path = [UIBezierPath bezierPathWithRect:
CGRectMake(-20, -20, 600, 600)];
[[UIColor greenColor] set];
[path fill];

CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetFillColorWithColor(context, [[UIColor blueColor] CGColor]);
CGContextFillRect(context, CGRectMake(-20, -20, 600, 600));
}

我使用 UI 和 CG 分别绘制一个矩形,以防一个有效而另一个无效。并将 View 添加到 viewDidAppear 中:

- (void)viewDidAppear:(BOOL)animated {
MyView *myView = [[MyView alloc] initWithFrame:CGRectMake(20, 20, 260, 260)];
[self.view addSubview:myView];
}

但无论如何,彩色框都不会超出(20, 20, 260, 260) 区域。只有 CALayer 可以自由添加并出现在 View 边界之外,这是真的吗?可能是因为图形上下文仅限于此 (20, 20, 260, 260) 开始吗?如果是这样,有没有办法让 drawRect 内容出现在 View 边界之外,在所有四个上、下、左、右方向上?

最佳答案

您的问题是“drawRect”会自动裁剪到您正在绘制的 View 中。

不是在 View 本身中进行绘图,而是将第二个(子) View 添加到第一个 View ,即在第一个 View 的边界之外。这将允许您根据第一个 View 的位置进行绘图,但在第一个 View 的边界之外。

希望这对您有所帮助。

关于ios - 在 iOS 上,drawRect 不能在 View 边界之外绘制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12550979/

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