gpt4 book ai didi

iphone - 动画自定义 UIView

转载 作者:行者123 更新时间:2023-11-29 11:17:13 24 4
gpt4 key购买 nike

我有一个使用 drawRect 实现的简单自定义 UIView(一个矩形)。

View 是从两个值绘制的;当前值和最大值

来自 drawRect:

rect 的高度表示 currentValue 是 maxValue 的多少:

if(currentValue > maxValue)
currentValue = maxValue;

float scale = currentValue/maxValue;

//Draw the rect
CGContextBeginPath(context);
CGContextMoveToPoint(context, self.bounds.origin.x, self.bounds.size.height);
CGContextAddLineToPoint(context, self.bounds.size.width, self.bounds.size.height);
CGContextAddLineToPoint(context, self.bounds.size.width, self.bounds.size.height-(self.bounds.size.height*scale));
CGContextAddLineToPoint(context, self.bounds.origin.x, self.bounds.size.height-(self.bounds.size.height*scale));
CGContextClosePath(context);

CGContextSetRGBFillColor(context, 1.0, 0.0, 0.0, 1.0);
CGContextFillPath(context);
CGContextStrokePath(context);

我设置了一个带有 UISlider 的 ViewController,它会更改 currentValue,每次更改时都会调用 setNeedsDisplay。这部分工作得很好。使用 slider 时矩形会改变高度,完全按计划进行。

我的问题是..我希望这种高度之间的过渡是动画的。最好的方法是什么?

谢谢

最佳答案

您可以将 CAShapeLayer 对象添加到您的 View 层,而不是使用带有自定义绘图的 UIView。 CAShapeLayer 类允许指定绘制路径和绘制属性 - 而且这些属性的更改很容易设置动画。

如果您的 View 只是一个充满纯色的矩形,那么您的第二个选择是调整 View 的框架或设置适当的仿射变换以获得所需的高度 - 这两个属性也可以使用 UIView 中的动画方法轻松设置动画 类。

关于iphone - 动画自定义 UIView,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8917603/

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