gpt4 book ai didi

iphone - 您如何检查 uiview 何时出现在屏幕上/完成绘图?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:45:39 26 4
gpt4 key购买 nike

我似乎在使用 drawrect 方法时遇到了一些问题。我正在使用 CGContextDrawPDFPage 将 PDF 页面绘制到 View 上,然后我希望在 View 的框架加载后运行 UIView 动画。但是,如果我在 drawrect 方法的末尾调用动画,它会导致动画不稳定,因为动画在 UIView 实际出现在屏幕上之前(有时是 2 秒后)已经过了它的持续时间。

我正在寻找一种方法来检查 View 是否已完成绘制。任何想法或帮助将不胜感激?

这是我的代码...

-(void)drawRect:(CGRect)inRect{  

pageRef = [[PDFManager sharedManager] getLargePDFPageRefForPage:pageNumber];
if(pageRef) {
ctx = UIGraphicsGetCurrentContext();
CGContextTranslateCTM(ctx, 0.0, [self bounds].size.height);
CGContextScaleCTM(ctx, 1.0, -1.0);
CGContextConcatCTM(ctx, CGPDFPageGetDrawingTransform(pageRef, kCGPDFCropBox, [self bounds], 0, true));
CGContextSetInterpolationQuality(ctx, kCGInterpolationNone);
CGContextSetRenderingIntent(ctx, kCGRenderingIntentDefault);

CGContextDrawPDFPage(ctx, pageRef);
}

[self moveFrame];

}


-(void)moveFrame{


[UIView animateWithDuration:0.7 delay:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{

self.frame = CGRectMake(0, 0, 500, 400);


} completion:^(BOOL finished) {

}];
}

最佳答案

AFAIK - drawRect: 方法在每次 View “变脏”时调用,这可能非常频繁。我对你的建议是不在 View 类中编写“移动”代码,而是在 Controller 类中,这可能是关注点分离更好的地方( Controller 管理 View 的位置,而 View 管理自身的绘图)。流程将与此类似:

  1. 启动 View 并将其添加为 subview (在 Controller 中)。这将使 View 自行绘制。
  2. 将实际 View 移动到您需要的位置(在 Controller 中)。

关于iphone - 您如何检查 uiview 何时出现在屏幕上/完成绘图?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9801857/

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