ReflectionView 1.2

ReflectionView 1.2

测试测试
语言语言 Obj-CObjective-C
许可证 MIT
发布上次发布2014年12月

Nick Lockwood维护。



  • 作者:
  • Nick Lockwood

用途

ReflectionView是一个UIView子类,旨在简化创建iOS上类似于“倒影地板”效果的反光效果。

你可能已经注意到,Apple提供了相应的Sample项目,但Apple的解决方案只适用于图像,并且涉及相对较慢的CPU密集型绘制来更新反光效果,使其不适合映射动态内容。ReflectionView可以以两种模式运行;静态模式,类似于Apple的样例代码;或者动态模式,它使用Core Animation,并实时处理任何视图。这意味着您可以用它来反射包含动态元素(如控件或动画)的视图内容,并且反射将实时更新。

支持的操作系统和SDK版本

  • 支持的构建目标 - iOS 8.0(Xcode 6.0,Apple LLVM编译器 6.0)
  • 最早支持的部署目标 - iOS 6.1
  • 最早兼容的部署目标 - iOS 4.3

注意:'支持'意味着已对该版本进行过测试。'兼容'意味着该库应能在该OS版本上运行(即它不依赖于任何不可用的SDK功能),但不再进行兼容性测试,可能需要调整或修复错误以正常运行。

ARC兼容性

从1.2版本起,ReflectionView需要ARC。如果您想在非ARC项目中使用ReflectionView,只需将-fobjc-arc编译器标志添加到ReflectionView.m类。为此,请转到目标设置中的构建阶段选项卡,打开编译源组,双击列表中的ReflectionView.m,并在弹出窗口中键入-fobjc-arc。

如果您想将整个项目转换为ARC,请取消注释ReflectionView.m中的#error行,然后在Xcode中运行编辑 > 重构 > 转换到Objective-C ARC...工具,确保所有您希望使用ARC的文件都已选中(包括ReflectionView.m)。

线程安全性

ReflectionView的所有外部接口都不是线程安全的,您不应该在除了主线程之外调用任何方法或设置任何属性。

安装

要在应用程序中使用ReflectionView,只需将ReflectionView类文件拖放到您的项目中,并添加QuartzCore框架。

属性

您可以使用以下属性配置ReflectionView实例

@property (nonatomic, assign) CGFloat reflectionGap;

视图与其反射之间的间隙,以像素(或在 Retina 显示设备上的点)衡量。默认为 4 像素。

@property (nonatomic, assign) CGFloat reflectionScale;

反射相对于视图的高度。默认为 0.5(视图高度的一半)。

@property (nonatomic, assign) CGFloat reflectionAlpha;

反射的不透明度。默认为 0.5(50% 不透明)。

@property (nonatomic, assign) BOOL dynamic;

在动态模式和静态模式之间切换。有关模式之间差异的解释,请参阅'性能'。默认为'NO'(静态模式)。

方法

- (void)update;

更新会重绘视图的反射。如果动态属性设置为'YES',则不必手动调用update,因为每当反射的任何属性更改或视图大小变化时,都会自动调用它。如果将动态设置为'NO',则可能需要调用update来重绘反射以匹配新内容。

用法

要使用ReflectionView,只需将您想要反射的视图作为ReflectionView实例的子视图添加,它们将被自动镜像。您还可以从ReflectionView派生子类以创建新视图。

请注意,为了正确工作,ReflectionView实例必须禁用clipToBounds

性能

获取ReflectionView良好性能的秘诀是使用正确的绘制模式。在动态模式下,当内容更改时,反射会自动更新。这对于经常更改或包含动画的内容来说很好,但它会产生每帧的性能开销。

对于不经常更改的内容,将动态属性设置为'NO'以获得更好的性能。在禁用动态模式时,如果内容更改,您需要手动调用update方法来更新反射。

发布说明

版本 1.2

  • 现在需要 ARC
  • 修复了 layoutSubviews 时的崩溃
  • 现在符合 -Weverything 警告级别
  • 添加了 podspec

版本 1.1

  • 添加了 ARC 支持
  • 改进了非动态反射渲染的性能
  • 修复了视图宽度或高度为零或反射比例为零时的警告

版本 1.0

  • 初始发布