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];
    }
  • 相关阅读:
    java不解压tar.gz读取包里面的某个文件内容或读取远程zip包中的文件内容
    java调用hadoop api
    httpclient读取https请求的数据
    使用svgo压缩图片
    重试机制
    java利用zip解压slpk文件
    mysql查询时特殊字符转译
    *.vue文件的template标签内使用form标签
    canvas.addEventListener()
    addEventListener(event, function, useCapture) 简记
  • 原文地址:https://www.cnblogs.com/xianfeng-zhang/p/8926538.html
Copyright © 2011-2022 走看看