• 旋转视图例子学习


    旋转效果,你想想在图片浏览的时候,照的时候是横起的,看肯定要旋转下才能更合适观看

    这个例子实现的旋转不是这样,但类似。

    仿射转换支持更改某个对象的几何特征,方法是将该对象从一个视图坐标系映射到另一个视图坐标系。
    iPhoneSDK完全支持标准的仿射2D转换,可以缩放、转换、旋转和倾斜视图。

    单词:Affine,adj.仿射的,几何学的,姻亲的;n.姻亲

    例子中使用了一个Timer来定时旋转。

    NSTimer类

    类方法:
        + scheduledTimerWithTimeInterval:invocation:repeats:
        + scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:
        + timerWithTimeInterval:invocation:repeats:
        + timerWithTimeInterval:target:selector:userInfo:repeats:

    代码中使用+ scheduledTimerWithTimeInterval:target:selector:userInfo:repeats:

    看看Timer做了什么
    - (void) handleTimer: (NSTimer *) timer
    {
    // Rotate each iteration by 1% of PI
    float angle = theta * (PI / 100);
    CGAffineTransform transform
    = CGAffineTransformMakeRotation(angle);
    theta
    = (theta + 1) % 200;

    // For fun, scale by the absolute value of the cosine
    float degree = cos(angle);
    if (degree < 0.0) degree *= -1.0f;
    degree
    += 0.5f;
    CGAffineTransform scaled
    = CGAffineTransformScale(transform, degree, degree);

    // Apply the affine transform
    [[self.view viewWithTag:ROTATE_VIEW_TAG] setTransform:scaled];
    }


    CGAffineTransform结构

        struct CGAffineTransform {
        CGFloat a;
        CGFloat b;
        CGFloat c;
        CGFloat d;
        CGFloat tx;
        CGFloat ty; };
        typedef struct CGAffineTransform CGAffineTransform;

        A structure for holding an affine transformation matrix.

    普通方法:
    CGAffineTransformMakeRotation
        CGAffineTransform CGAffineTransformMakeRotation ( CGFloat angle );

        Returns an affine transformation matrix constructed from a rotation value you provide.

        将角度值转为几何结构值

    CGAffineTransformScale
        CGAffineTransform CGAffineTransformScale ( CGAffineTransform t, CGFloat sx, CGFloat sy );

        Returns an affine transformation matrix constructed by scaling an existing affine transform.

    UIView类

    属性:
    transform
        Specifies the transform applied to the receiver, relative to the center of its bounds.

        @property(nonatomic) CGAffineTransform transform
       
    好了,主要实现就是这样的。

    注意一下代码的使用:
    UIWindow *window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];
    HelloController
    *hello = [[HelloController alloc] init];
    UINavigationController
    *nav = [[UINavigationController alloc] initWithRootViewController:hello];
    [window addSubview:nav.view];
    [window makeKeyAndVisible];


    其中UINavigationController *nav = [[UINavigationController alloc] initWithRootViewController:hello];就意味着我可用普通试图控制器来编写其视图逻辑,其导航逻辑应该由Nav来控制,后续实践此想法。


    无论生活、还是技术,一切都不断的学习和更新~~~努力~
  • 相关阅读:
    POJ 3187 Backward Digit Sums
    POJ 3669 Meteor Shower BFS
    POJ 1979 Red and Black DFS
    不想切题、
    企业管理信息系统成功实施的四个阶段
    linux下memcached的安装
    Apache开启伪静态示例
    网页设计基础知识
    memcached安装说明
    伪静态.htaccess的练习
  • 原文地址:https://www.cnblogs.com/GoGoagg/p/2052000.html
Copyright © 2020-2023  润新知