1. 前言

让图片不止是图片,让图片动起来。透过图片的animation以及随机数来完成一个简易版的轮盘游戏。

2. 目的

藉由这个APP的实作过程,练习使用animation及随机数。

3. 开始前准备

开发工具:Xamarin studio / Visual Studio

测试环境:iOS手机 / XCode

4. 本文

首先开启一个Xamarin iOSSingle View App项目。

添加一张手指的图片及一张轮盘的图片到项目路径下

在页面加入一个按钮并添加action event如下图

编辑ViewController

初始化物件

CALayer layer;
//是否为初次执行,初次执行起始值为0
bool init = false;
//记住前次结果值
float lastFloat = 0f;

加载轮盘图片及手指图片

//轮盘图片
layer = new CALayer ();
layer.Bounds = new CGRect (0, 0, 300, 300);
layer.Position = new CGPoint (190, 340);
layer.Contents = UIImage.FromFile ("wheel.png").CGImage;
layer.ContentsGravity = CALayer.GravityResizeAspectFill;
View.Layer.AddSublayer (layer);
//指针图片
var imageView = new UIImageView (UIImage.FromBundle("hand_pointer_down.png"));
imageView.Frame = new CoreGraphics.CGRect (
40,
0,
imageView.Image.CGImage.Width,
imageView.Image.CGImage.Height
);
View.Add (imageView);

编辑按钮动作

//定义随机数值
double dou = new Random().NextDouble();
//轮盘旋转圈数
float round = 200f;
//起始值初始化
float v1 = 0f;
//结果值初始化,
float v2 = (float)Math.PI * round * Convert.ToSingle(dou);
//如果已执行过,下次旋转的初始值为此次执行结果值
if(init == true){
v1 = lastFloat;
}//Creates basic moving animation//定义animation动作
var basicAnimation = CABasicAnimation.FromKeyPath ("transform.rotation");
basicAnimation.TimingFunction = CAMediaTimingFunction.FromName (CAMediaTimingFunction.EaseInEaseOut);
//定义轮盘初始值
basicAnimation.From = NSNumber.FromFloat (v1);
//定义轮盘结果值
basicAnimation.To = NSNumber.FromFloat (v2);
//animation运行时间,数字越大动作越慢
basicAnimation.Duration = 2;
init = true;
lastFloat = v2;//锁定结束位置
layer.Transform = CATransform3D.MakeRotation (lastFloat, 0, 0, 1);
layer.AddAnimation(basicAnimation, "transform.rotation");

执行结果

5. 参考来源

Create a Keyframe Animationhttps://developer.xamarin.com/recipes/ios/animation/coreanimation/create_a_keyframe_animation/

转载自:昕力大学

Xamarin iOS 让图片动起来,做一个简单的俄罗斯轮盘相关推荐

  1. 【微信小程序控制硬件⑦ 进阶篇】动起来做一个微信小程序Mqtt协议控制智能硬件的框架,为心里全栈工程师梦想浇水。

    文章目录 一.前言: 二.涉及的技术点: 三.框架的运行原理: 四.框架代码流程: 4.1 主线程: 4.2 获取设备列表显示设备,以及订阅在线的设备: 4.3 点击某设备如何实现携带此设备信息到控制 ...

  2. 第四章 .net core做一个简单的登录

    项目目标部署环境:CentOS 7+ 项目技术点:.netcore2.0 + Autofac +webAPI + NHibernate5.1 + mysql5.6 + nginx 开源地址:https ...

  3. extjs 在textfield后面加一个button_用python 做一个简单的MP3

    本节将教大家如何做一个简单的mp3,希望大家能有所收获,写的不足之处望大家谅解. 废话少说,直接上代码: #!/usr/bin/env python # -*- coding: utf-8 -*- i ...

  4. 使用环信sdk做一个简单的聊天APP

    使用环信sdk做一个简单的即时聊天APP,实现简单的通讯 感悟 在很早以前就想做一个简单的即时聊天app.可能自己对即时聊天的三方SDK了解的不是特别深,在进行了一段时间的学习以后感觉自己的能力达到了 ...

  5. 蚂蚁研究员玉伯:做一个简单自由有爱的技术人

    玉伯 蚂蚁研究员 读完需要 10 分钟 速读仅需 1 分钟 玉伯,蚂蚁研究员,体验技术部负责人.2008 年加入淘宝,2012 年开始在支付宝致力于设计语言 Ant Design.数据可视化 AntV ...

  6. 玉伯:做一个简单自由有爱的技术人

    简介: 前端工程师如何成长?如何管理前端团队?如何打造团队文化?近日,蚂蚁研究员兼体验技术部负责人玉伯,在蚂蚁内部技术人的成长公开课上,分享了他的人生愿景和心路历程. 作者 | 玉伯 前端工程师如何成 ...

  7. 做一个简单网页(做一个简单网页多少钱)

    怎样做一个简易的网页?做一个简单网页多少钱 做一个简易的普通网页比较容易.当然,制作的方法有好几种,有的是直接写代码.有的是用绘图软件绘制页面再导出网页.常用的是使用网页制作软件做网页.下面以普通静态 ...

  8. 用python做一个简单GUI小软件

    用python做一个简单软件 前言 这是一个课设,用python做一个扫描王软件 我主要做的GUI部分,记录分享一下.也是第一次用python做小软件,python的方便果然是名不虚传 遇到问题 1. ...

  9. Python【小游戏合集】之自己做一个简单又好玩的推箱子小游戏

    导语:哈喽铁汁们~今日游戏之旅开始! 想领取完整源码跟python学习资料可私信我或点击这行字体 这期就是带大家使用当前主流且易用的Python语言做一个简单的推箱子小游戏 现在小编的快乐源泉就是玩自 ...

最新文章

  1. html中连续点击某个标签会出现蓝色的解决方法
  2. IDC发布制造业预测,AI风险决策因何上榜?
  3. windows下redis安装,注册成系统服务
  4. 安卓linux交叉编译,Linux Ubuntu下用Android NDK 生成独立交叉编译链
  5. [蓝桥杯2015初赛]生命之树-求树的最大子树权值和
  6. 辨异 —— Java 中的抽象类和接口
  7. ASP.NET DEMO Ⅳ : 使用数据源控件将数据绑定到 ListControl 上
  8. 网络工程师HCIE-RS-路由回馈问题(通俗易懂!)
  9. ASP Blob类型转存为Long Raw类型
  10. php复制按钮,【typecho】typecho优化之代码框添加复制按钮
  11. VMware15.5.2安装unlocker时下载工具一直失败
  12. html滑动验证图片,滑动验证 和滑动图片验证JS
  13. lfw分类 python_Python机器学习:PCA与梯度上升:009人脸识别与特征脸(lfw_people数据集)...
  14. 第二讲:高性能计算关键技术和趋势分析
  15. JavaScript阿拉伯数字“1“转中文数“一“
  16. 电子计算机第一台视频,1946年2月14日世界上第一台计算机诞生
  17. 数组扁平化——flat方法理解
  18. yys opencv自动图片识别 学习交流
  19. java导出txt文件列对齐
  20. 雷军为什么要挖常程?

热门文章

  1. leetcode第188场周赛20200510
  2. 2021年高处安装、维护、拆除考试题及高处安装、维护、拆除模拟试题
  3. RPA不是“万灵丹”,需人机分工内控风险
  4. 读《Exploring GNU radio》笔记——初始gnuradio
  5. 阿里服务器教程大全-服务器、建站、备案、网站配置
  6. 王者荣耀QQ区和微信区怎么充值点券
  7. 数学基础(2)~ 数理统计基础知识
  8. 麻雀搜索算法SSA(有matlab代码,复制粘贴即可)
  9. 构造函数被私有化就没办法直接new一个对象
  10. shell调用api store查询手机号码归属地