iOS 8 + Swift - 希望定义多条车道,但根据事件绘制它们
iOS 8 + Swift - Looking to define multiple lanes, but draw them based on events
我的一个应用故事板中有 3 个按钮。根据用户按下的按钮,我想画一条不同的线。我是 iOS 开发的新手,我正在查看 Apple 的开发人员库以了解有关如何创建上下文、路径和线路定义的详细信息,但我无法弄清楚定义上下文和路径的实现多行。
在此先感谢您的帮助。
编辑 - 2015-02-24: 澄清问题并添加视频解释我如何在另一个平台上执行此操作。
因为这个问题可能难以理解,并且因为我在 Windows 开发方面有更多经验,所以我创建了一个 Windows Phone 应用程序来展示我想做的事情在 iOS+Swift.
以下是我在 XAML + C# 中针对 Windows 通用应用程序(运行时)
执行此操作的方法
首先,我在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 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?
特别是其中一个答案有这个 link:
http://tumbljack.com/post/179975074/complex-interpolation-with-cashapelayer-free
基本上,使用 CAShapeLayer
并制作从空路径到包含目的地的路径的动画。
我的一个应用故事板中有 3 个按钮。根据用户按下的按钮,我想画一条不同的线。我是 iOS 开发的新手,我正在查看 Apple 的开发人员库以了解有关如何创建上下文、路径和线路定义的详细信息,但我无法弄清楚定义上下文和路径的实现多行。
在此先感谢您的帮助。
编辑 - 2015-02-24: 澄清问题并添加视频解释我如何在另一个平台上执行此操作。
因为这个问题可能难以理解,并且因为我在 Windows 开发方面有更多经验,所以我创建了一个 Windows Phone 应用程序来展示我想做的事情在 iOS+Swift.
以下是我在 XAML + C# 中针对 Windows 通用应用程序(运行时)
执行此操作的方法首先,我在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 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?
特别是其中一个答案有这个 link:
http://tumbljack.com/post/179975074/complex-interpolation-with-cashapelayer-free
基本上,使用 CAShapeLayer
并制作从空路径到包含目的地的路径的动画。