文档章节

iOS开发UIMotionEffect运动视觉效果

o
 osc_x4h57ch8
发布于 2018/04/24 10:15
字数 245
阅读 10
收藏 0

精选30+云产品,助力企业轻松上云!>>>

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];
}

 

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。
IOS7 Tech Talk总结

导航 一、kick off A、苹果推出了iOS7,他们希望开发者打造的apps能够更具有吸引力,首先是第一印象要好,App Store的截图制作就要好。 在开发软件的时候,应该注重字体的颜色和图像,要用透...

gaoios
2014/01/13
75
0
iOS编程实战 — 新的UI范式

self.view.saturationDelta = 2.0f; self.layer = [CALayer layer];self.layer.frame = CGRectMake(80, 100, 160, 160);[self.view.layer addSublayer:self.layer]; // 截屏float scale = [......

Julday
02/03
0
0
iOS编程实战 — 新的UI范式

https://www.cnblogs.com/Julday/archive/2020/02/03/12256310.html self.view.saturationDelta = 2.0f; self.layer = [CALayer layer];self.layer.frame = CGRectMake(80, 100, 160, 160);[......

osc_i7pg9ead
03/19
9
0
iOS编程实战 — 新的UI范式

https://www.cnblogs.com/Julday/archive/2020/02/03/12256310.html self.view.saturationDelta = 2.0f; self.layer = [CALayer layer];self.layer.frame = CGRectMake(80, 100, 160, 160);[......

osc_rki80br3
03/19
1
0
15.11.05笔记

UIInterpolatingMotionEffect 苹果文档的解释是: A UIInterpolatingMotionEffect object maps the horizontal or vertical tilt of a device to values that you specify so that UIKit can ......

burning_oc
2015/11/05
8
0

没有更多内容

加载失败,请刷新页面

加载更多

等到所有jQuery Ajax请求都完成了吗? - Wait until all jQuery Ajax requests are done?

问题: How do I make a function wait until all jQuery Ajax requests are done inside another function? 我如何让一个函数等到所有jQuery Ajax请求都在另一个函数中完成之后? In short...

富含淀粉
12分钟前
0
0
OSChina 周日乱弹 —— 那么长的绳子,你这是放风筝呢

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @ 巴拉迪维:黑豹乐队的单曲《无地自容》 耳畔突然响起旋律,是那首老歌。中国摇滚有了《一无所有》不再一无所有;中国摇滚有了《无地自容》不...

小小编辑
今天
65
1
《吐血整理》-顶级程序员书单集

你知道的越多,你不知道的越多 给岁月以文明,而不是给文明以岁月 前言 王潇:格局决定了一个人的梦想,梦想反过来决定行为。 那格局是什么呢? 格局是你能够看见的深度、广度和密度。 王潇认...

敖丙
2019/12/11
11
0
我可以在Android版式中加下划线吗? - Can I underline text in an Android layout?

问题: 如何在Android布局xml文件中定义带下划线的文本? 解决方案: 参考一: https://stackoom.com/question/A31z/我可以在Android版式中加下划线吗 参考二: https://oldbug.net/q/A31z/...

法国红酒甜
今天
26
0
干掉ELK | 使用Prometheus+Grafana搭建监控平台

什么是Prometheus? Prometheus是由SoundCloud开发的开源监控报警系统和时序列数据库(TSDB)。Prometheus使用Go语言开发,是Google BorgMon监控系统的开源版本。 Prometheus的特点 · 多维度...

木九天
今天
34
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部