zoukankan      html  css  js  c++  java
  • iOS开发UIMotionEffect运动视觉效果

    1、UIMotionEffect简介

      在iOS7.0推出了UIMotionEffect运动视觉效果,就是从屏幕偏移不同角度、看到的效果不同!

    NS_CLASS_AVAILABLE_IOS(7_0)
    @interface UIMotionEffect : NSObject <NSCopying, NSCoding>
    - (instancetype)init NS_DESIGNATED_INITIALIZER;
    - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
    //观察者的角度偏移viewerOffset,获取运动视觉效果的各项属性和值
    - (nullable NSDictionary<NSString *, id> *)keyPathsAndRelativeValuesForViewerOffset:(UIOffset)viewerOffset;
    @end
    
    typedef NS_ENUM(NSInteger, UIInterpolatingMotionEffectType) {
        UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis,//X轴
        UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis//Y轴
    };
    
    @interface UIInterpolatingMotionEffect : UIMotionEffect
    - (instancetype)initWithKeyPath:(NSString *)keyPath type:(UIInterpolatingMotionEffectType)type NS_DESIGNATED_INITIALIZER;//初始化
    - (nullable instancetype)initWithCoder:(NSCoder *)aDecoder NS_DESIGNATED_INITIALIZER;
    
    @property (readonly, nonatomic) NSString *keyPath;//获取角度偏移
    @property (readonly, nonatomic) UIInterpolatingMotionEffectType type;//获取类型
    @property (nullable, strong, nonatomic) id minimumRelativeValue;//最小角度偏移
    @property (nullable, strong, nonatomic) id maximumRelativeValue;//最大角度偏移
    @end
    
    @interface UIMotionEffectGroup : UIMotionEffect
    @property (nullable, copy, nonatomic) NSArray<__kindof UIMotionEffect *> *motionEffects;//添加水平和垂直效果添加到对应UI上
    @end

    2、简单使用

    - (void)addEffectWithOffset:(NSInteger)offset withView:(UIView *)view{
        UIInterpolatingMotionEffect *effectX = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.x" type:UIInterpolatingMotionEffectTypeTiltAlongHorizontalAxis];
        effectX.minimumRelativeValue = @(-offset);
        effectX.maximumRelativeValue = @(offset);
        
        UIInterpolatingMotionEffect *effectY = [[UIInterpolatingMotionEffect alloc] initWithKeyPath:@"center.y" type:UIInterpolatingMotionEffectTypeTiltAlongVerticalAxis];
        effectY.minimumRelativeValue = @(-offset/2);
        effectY.maximumRelativeValue = @(offset/2);
        
    //    UIMotionEffectGroup *group = [[UIMotionEffectGroup alloc] init];
    //    group.motionEffects = @[effectX,effectY];
        view.motionEffects = @[effectX,effectY];
    }
  • 相关阅读:
    servlet
    grep命令
    sort排序命令
    shell脚本面试
    查看远端的端口是否通畅3个简单实用案例!
    mail命令
    linux系统优化的方法
    shell数组
    shell函数介绍语法说明及基本例子
    循环结构的多个控制命令对比与实际案例
  • 原文地址:https://www.cnblogs.com/xianfeng-zhang/p/8926538.html
Copyright © 2011-2022 走看看