gpt4 book ai didi

ios - 如何正确使用DrawRect

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:46:35 27 4
gpt4 key购买 nike

我目前正在构建自定义 UIActivityIndi​​cator。为此,我创建了以下绘制矩形函数:

-(void) drawRect:(CGRect)rect  
{
CGPoint point;
NSLog(@"here %d",stage);`

CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextSetLineWidth(ctx, 2.0);

for (int i = 1 ; i<=10; ++i) {


CGContextSetStrokeColorWithColor(ctx, [[self getColorForStage:stage+i WithAlpha:0.1 *i] CGColor]);
point = [self pointOnOuterCirecleWithAngel:stage+i];
CGContextMoveToPoint(ctx, point.x, point.y);
point = [self pointOnInnerCirecleWithAngel:stage+i];
CGContextAddLineToPoint( ctx, point.x, point.y);
CGContextStrokePath(ctx);
}



stage++;
}

我添加了一个 NSTimer 来调用 [self setNeedsDisplay];

动画工作正常但是当我每次滚动表格或做任何事情时将它导入我的应用程序时动画将停止直到表格停止移动。

我假设只有在 UI 完成更新后才会更新我的 DrawRect 但我该如何解决它或以正确的方式进行

最佳答案

如果您希望它在表格 View (或任何其他 ScrollView )滚动时触发,您必须使用不同的运行循环模式手动安排您的计时器。默认情况下,计时器不会在滚动时触发以提高性能。

NSTimer *timer = [NSTimer timerWithTimeInterval:0.1 target:self selector:@selector(setNeedsDisplay) userInfo:nil repeats:YES];
[[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes];

(您将使用 NSDefaultRunLoopMode 而不是 NSRunLoopCommonModes 获得默认行为。)

关于ios - 如何正确使用DrawRect,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16923492/

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