我有一个看起来像甜甜圈的图像,并希望对其进行动画处理,使其看起来像圆环未完成(笔划未关闭).很难描述,但想象一下速度表达到100并且你驱动50.我已经在UIGraphicsBeginImageContextWithOptions内的路径和[path addClip]的帮助下完成了屏蔽,其中我也渲染了UIImage.
我现在的问题是,我可以或如何设置路径的动画.我尝试使用CABasicAnimation和2个路径(第一个路径,其中startAngle和endAngle是相同的,第二个路径是endAngle是所需的角度),"path"作为keyPath但是不起作用.
任何帮助;)
如果我在TTTAttributedLabel示例应用程序"Espresso"中将linebreakmode设置为截断尾部,看起来它应该在iOS 5模拟器中,但如果我在iOS 6模拟器中运行应用程序,文本会在第一行后被截断,尽管文本超过3行.行数设置为零.我错过了什么?在Espresso应用程序中我注意到这种行为后,我可以不再担心我自己的应用程序中代码的破坏.有什么建议?谢谢!
我想在不使用QuartzCore的情况下为UIImageView添加圆角以避免UIScrollView中的性能问题,所以我解决了它:
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect byRoundingCorners:UIRectCornerTopLeft|UIRectCornerTopRight cornerRadii:CGSizeMake(self.cornerRadius, self.cornerRadius)];
[path addClip];
UIGraphicsBeginImageContextWithOptions(rect.size, NO, [[UIScreen mainScreen] scale]);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetBlendMode(UIGraphicsGetCurrentContext( ),kCGBlendModeClear); CGContextSetStrokeColorWithColor(context, [UIColor clearColor].CGColor);
CGContextAddPath(context,path.CGPath);
CGContextClip(context);
CGContextClearRect(context,CGRectMake(0,0,width,height));
[_image drawInRect:rect];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
Run Code Online (Sandbox Code Playgroud)
遗憾的是,在drawRect中调用,这需要一点处理时间,这会在UIScrollView中滚动时产生滞后.因此,我试图在dispatch_async的帮助下在一个单独的线程中处理它.这消除了滞后,一切都顺利进行.但现在我有另一个问题.我在调试器中收到许多无效的上下文消息,因为当线程异步启动图像处理时,GraphicsContext并不总是存在.有没有办法处理我的图像中的圆角而不会得到无效的上下文消息?请注意,我不想使用QuarzCore的cornerRadius或mask-functions.