我开始一个包含核心动画使用的项目。在过去的一段时间里,我一直在我的应用程序中使用 UIView 动画来制作动画。现在我想通过使用核心动画将我的动画提升到更高的水平。
我查看了Brad Larsson的关于 Core Animation 的课程,它很好地解释了动画使用的概念。然而,在我的(UIView 子类)自己的实现中使用这些动画的体面实现还不清楚。
目前,我设法在滚动视图中创建了图像的缩略图视图。这是通过在 a 中创建视图for-loop
并将这些 UIView 子类化来完成的。但是,我应该如何drawRect
在 UIView 子类的函数中使用 Core Animation 在这些视图上实现动画。我正在考虑对它进行曲线变换。
drawRect
到目前为止,我的代码用于绘制一个带有弧形阴影和顶部图像的白色矩形:
//Draw function for displaying the seperate views/thumbnails
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGRect ShadowRect = CGRectMake(15,15, 130,90);
CGRect ImageRect = CGRectMake(20,20, 120,80);
//save context and add the arc calculation and apply it on the shadow
CGContextSaveGState(context);
CGMutablePathRef arcPath = createArcPathFromBottomOfRect(ShadowRect, 5.0);
CGContextAddPath(context, arcPath);
CGContextSetShadow(context, CGSizeMake(0.0, 5.0), 3.0);
CGContextFillPath(context);
CGContextRestoreGState(context);
//now we draw a white rectangle within the same frame as the shadow
CGContextSaveGState(context);
CGColorRef whiteColor = [UIColor colorWithRed:1.0 green:1.0 blue:1.0 alpha:1.0].CGColor;
CGContextSetFillColorWithColor(context, whiteColor);
CGContextFillRect(context, ShadowRect);
CGContextRestoreGState(context);
CGContextSaveGState(context);
[self.img drawInRect:ImageRect];
CGContextRestoreGState(context);
CFRelease(arcPath);
}