• 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];
    }
  • 相关阅读:
    python subprocess.Popen 非阻塞
    linux错误码
    python中logging
    python多线程和多进程对比
    python多进程提高cpu利用率
    django orm 操作
    linux故障判断
    linux中软链接打包、计算以及同步
    小程序收集formid跳转后收集不到
    Git Base 操作(二)
  • 原文地址:https://www.cnblogs.com/xianfeng-zhang/p/8926538.html
Copyright © 2020-2023  润新知