iOS-学习笔记-UI-第十五天

回顾:

绘图

两点:

1. 绘图代码写在哪?

    a. 继承自UIView后重写drawRect

    b. 在控制器中,代码写在UIGraphicsBeginImage...和EndImage之间


2. 绘图代码能写几种风格?

    a. 使用UIKit中UIColor NSString UIImage UIBezierPath中封装完的常用绘图方法

    b. 使用底层的Core Graphics c函数


3. 如何重绘?

    setNeedDIsplay



今天


1. 手势

    1.1 什么是手势?

        用户在左触屏动作时,一些有特定规律的移动轨迹,叫做手势

    1.2 有哪些手势?

        一次性手势 (方法只执行一次)

            Tap  点 按

            Swipe 轻扫

        连续性手势 (方法会执行多次)

            LongPress 长按

            Pan  拖动

            Pinch 捏合 外扩

            Rotation 旋转


    1.3 手势的本质

        将用户针对设备屏幕的物理性动作,转换成计算机能够处理的数据,也就是说把动作转换成了一个数据存起来,所以,在机器内,手势最总都是程序中得一个对象,对手势的处理,就是分析这个对象中存储的数据,掌控用户的动作,再来响应


    1.4 如何使用手势?

        所有手势都从 UIGestureRecognize 派生而来

        系统提供的手势有如下:

        UITapGestureRecognizer

        UISwipeGestureRecognizer

        UILongPressGesutreRecognizer

        UIPanGestureRecognizer

        UIPinchGestureRecognizer

        UIRotationGestureRecognizer

            

    1.5 如何使用手势

        step 1:创建手势对象

        step 2:设定手势的常用属性

        step 3:将手势与具体的视图绑定在一起(只有在绑定的视图上,做该手势时,系统才会做出响应)


    1.6 UITapGestureRecognizer

        一次性手势:点 按

        常用设置属性

        // 设置需要的点按次数

        tapGR.numberOfTabsRequired = 2;

        // 设置需要的触点个数

        tapGR.numberOfTouchesRequired = 1;


    1.7 UISwipeGestureRecognizer

        一次性手势:轻扫

        重要属性:方向 direction

        注意:设置支持的方向时,不能同时把四个方向都或到一起,也不能将上下或左右同时设置,因为无法界定用户的有一定角度的手势,是向左右还是上下。

        

    1.8 UILongPressGestureRecognizer

        连续性手势,长按

        重要属性:minimumPressDuration


    1.9 UIPinchGestureRecognizer

        连续性手势:捏合 外扩

        重要的可读写属性:

            velocity:动作的数独 向外扩时为正值,向内捏合时为负值

            scale:每一次动作发生后,两个触点之间的距离相对于动作起始时,两触点之间的距离的变化倍数


    1.11 UIPanGestureRecognizer

        连续性手势:拖拽

        重要的方法:

            locationInView 获取触点在某个视图中得坐标点位置

    1.12 UIRotationGestureRecognizer

        连续性手势:旋转

        重要的属性:

            rotation:获取旋转后的位置相对于动作起始点便宜的弧度

            

2. 变形

    2.1 什么是变形?(transform)

        视图发生了位移 缩放 旋转这样的变化时,叫做变形


    2.2 如何实现变形

        通过修改视图的transform属性完成变化的效果

        位移:translation

        缩放:scale

        旋转:rotation


    2.3 transform 属性

        类型:CGAffineTransform类型的结构体,也称放射变换

        结构体中包含了6个可变的数值和3个定值,组成了3X3的矩阵,只要修改矩阵中6个数值中得某几个,就可以实现变形。


    2.4 修改transform属性的API

        位移变换:

            CGAffineTransformMakeTranslation()

            CGAffineTransformTranslate()

        缩放变换:

            CGAffineTransformMakeScale()

            CGAffineTransformScale()

        旋转变换:

            CGAffineTransformMakRotation()

            CGAffineTransformRotate()


        以上方法可以分成两大组:

            带有make:变换是 基于 “视图最开始没有任何变形” 的这个状态来变形

            没有make:变换是 基于 “传入的transform的值” 进行变形


             重点注意:变形与自动布局(Auto Layout)是冲突的,所以在使用变形时,要关闭自动布局,否则,产生的效果无法预计


        在哪里关闭自动布局?

            随便选择一个 小黄球控制器,在右侧的第一个检查器中,将Auto Layout前面的复选框 勾掉即可


    2.5 熟悉API


    2.6 手势+变形 实现图片查看


    2.7 如何让多手势并存

            step 1:设置两个需要并存的手势的代理为当前控制器

            step 2:当前控制器遵守协议

            step 3:控制器实现方法


    注意:如果手势添加到了imageVIewshang ,要设置图片的userInteractionEnable为YES,也就是需要开启用户交互功能


作业:图片查看器

1》使用代码的方式向view添加一个UIImageView对象,UIImageView的大小和加载的图片的大小一致,所以找一张大得图片(推荐:使用Elephant.jpg)

2》使用center属性将ImageView移动到屏幕的中间

3》使用transform属性将imageView缩放到屏幕刚刚好能显示下图片的全部

4》对iamgeVIew增加rotation手势,支持图片的选择

5》对iamgeVIew增加pinch手势,支持图片的缩放

6》对imageView增加pan手势,支持图片的移动

7》对imageView增加tap手势,双击后,恢复到第3步




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值