我的应用 Storyboard之一中有 3 个按钮。根据用户按下的按钮,我想绘制一条不同的线。我是 iOS 开发的新手,我正在查看 Apple 的开发人员库以了解有关如何创建上下文、路径和行定义的详细信息,但我无法弄清楚为多行定义上下文和路径的实现。
预先感谢您的帮助。
编辑 - 2015-02-24:澄清问题并添加视频解释我如何在另一个平台上执行此操作。
因为这个问题可能很难理解,而且因为我有更多的 Windows 开发经验,所以我创建了一个 Windows Phone 应用程序来展示我想在 iOS+Swift 上做什么。
以下是我在Windows 通用应用程序(运行时)的 XAML + C# 中执行此操作的方法
首先,我在 MainPage.xaml 中定义该行(稍后添加 Tranform 标记):
<Line x:Name="line1" Stroke="Black" StrokeThickness="6" Y1="60" Y2="60" RenderTransformOrigin="0.5,0.5" Margin="1,0,-1,0" X1="30" X2="30">
<Line.RenderTransform>
<CompositeTransform/>
</Line.RenderTransform>
</Line>
然后我在 XAML 文件的 Page.Resources 部分中定义 Storyboard动画:
<Storyboard x:Name="anLine2">
<DoubleAnimation Duration="0" To="0" Storyboard.TargetProperty="(UIElement.RenderTransform).(CompositeTransform.TranslateX)" Storyboard.TargetName="line1" d:IsOptimized="True"/>
<DoubleAnimationUsingKeyFrames EnableDependentAnimation="True" Storyboard.TargetProperty="(Line.X2)" Storyboard.TargetName="line2">
<EasingDoubleKeyFrame KeyTime="0" Value="30"/>
<EasingDoubleKeyFrame KeyTime="0:0:0.30" Value="380"/>
</DoubleAnimationUsingKeyFrames>
</Storyboard>
我定义按钮:
<Button x:Name="btnL1" Content="Line 1" HorizontalAlignment="Left" VerticalAlignment="Bottom" Margin="10,0,0,0" Click="btnL1_Click"/>
最后,当按下按钮时我触发动画<>:
private void btnL1_Click(object sender, RoutedEventArgs e)
{
anLine1.Begin();
}
我定义了 3 行和 3 个按钮。结果见这个视频(视频中看起来有点断断续续,不过是因为有截屏软件的缘故,在模拟器和测试机上执行都很流畅): http://youtu.be/Y4i2IUehl7U
现在,我想要的是能够做到这一点,但在 iOS 上使用 Swift。我希望这有助于澄清问题。
提前致谢!
最佳答案
我想你想要的是为正在绘制的线条设置动画 - 如果是这样,请参阅以下问题:
how to draw line with animation?
特别是其中一个答案有这个链接:
http://tumbljack.com/post/179975074/complex-interpolation-with-cashapelayer-free
基本上,使用 CAShapeLayer
并从空路径到包含目的地的路径设置动画。
关于iOS 8 + Swift - 寻求定义多个车道,但根据事件绘制它们,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28600550/