iOS SDK
更新时间:2021-10-22
安装
环境准备
1.运行环境,iOS12及以上
2.鉴权和认证 要使用百度智能云产品,您需要拥有一个百度智能云账号和一个有效的 AK(Access Key ID)
、SK(Secret Access Key)
用来进行签名认证。
可以通过如下步骤获得并了解您的AK/SK信息:
下载和安装
SDK
- 从此处下载
Phoenix_release_{verison}.tar.gz
。(version为具体版本号) - 解压
- 导入
Phoenix.xcframework
到工程里
Demo
- 从此处下载Demo。
- 解压
- 请求授权接口填入申请的
AK
,SK
。
具体功能
全景:全景图渲染,相机操作,多种交互模式,热点等 环物:环物渲染,手势操作,多种交互模式,热点等
快速入门
本节介绍如何快速使用Phoenix SDK完成常见操作。
请求授权
Phoenix SDK 使用前需要进行初始化,传入申请的 ak
sk
,依据回调结果进行后续操作。
PhoenixSDK.shared.authorize(ak: "your-access-key-id",
sk: "your-secret-access-key",
complete: { error in
if error == nil {
print("授权成功")
} else {
print("授权失败")
}
})
全景
目前全景图支持四种渲染类型,分别是 cube 散图、cube 雪碧图、单张全景图和分级分块图。
- 初始化
首先创建 PanoConfiguration
:
let config = PanoConfiguration(resource: resourceString)
用户可对配置PanoConfiguration
进行设置:
// 是否开启入场动画
config.enableEnterAnimation = false
// 初始视角
config.cameraAngle = 0
// 渲染分级分块图时,设置瓦片图加载延迟 ,默认500ms
config.tileUpdateDuration = 0
初始化PanoView
:
// 第一种方式
let panoView = PanoView(frame: view.frame, configuration: config)
// 第二种方式
let panoView = PanoView(frame: view.frame)
panoView.updateConfiguration(configuration: config)
- 添加热点
// 创建自定义热点View
let helloHotspot = HelloPanoHotspot()
helloHotspot.frame = CGRect(x: 0, y: 0, width: 42, height: 42)
// 初始PanoViewHotspot
let hotspot = PanoViewHotspot(view: helloHotspot, x: 0, y: -20, z: -80)
//添加到panoView中
panoView?.add(hotspot: hotspot)
- 删除热点
// 删除热点
panoView?.remove(hotspot: hotspot)
// 删除所有热点
panoView?.removeAllHotspots()
- 动画
// 属性动画
let animation = CABasicAnimation(keyPath: "eulerAngles.y")
animation.byValue = degreeToRadians(angle: 360)
animation.duration = 10
panoView?.camera?.add(animation, forKey: "camera")
// 开始自动旋转 (默认10s一圈)
panoView?.startAutoRotate(duration: 10, isReverse: Bool = false)
// 停止自动旋转
panoView?.stopAutoRotate()
环物
- 初始化
首先创建 SpinConfiguration
:
let config = SpinConfiguration(resource: resourceString)
初始化SpinView
:
// 第一种方式
let spinView = SpinView(frame: view.frame, configuration: config)
// 第二种方式
let spinView = SpinView(frame: view.frame)
panoView.updateConfiguration(configuration: config)
- 添加热点
// 创建自定义热点View
let helloHotspot = HelloPanoHotspot()
helloHotspot.frame = CGRect(x: 0, y: 0, width: 50, height: 50)
// 初始PanoViewHotspot
let hotspot = SpinHotspot(view: helloHotspot, row: 0, column: 0, x: 0.5, y: 0.5)
//添加到panoView中
spinView?.add(hotspot: hotspot)
- 删除热点
// 删除热点
spinView?.remove(hotspot: hotspot)
// 删除所有热点
spinView?.removeAllHotspots()
- 动画
// 属性动画
let columnAnimation = CABasicAnimation(keyPath: SpinAnimationProperty.column)
columnAnimation.fromValue = 0
columnAnimation.toValue = 18
columnAnimation.duration = 2
spinView?.add(columnAnimation, forKey: "columnAnimation")
API及参数
全景
PanoView接口列表
接口 | 描述 |
---|---|
updateConfiguration(configuration: PanoConfiguration) | 更新当前配置 |
switchView(configuration: PanoConfiguration) | 切换当前配置 |
add(hotspot: PanoHotspot) | 增加热点 |
remove(hotspot: PanoHotspot) | 删除热点 |
startAutoRotate(duration: Double = 10, isReverse: Bool = false) | 开始自动旋转 (默认10s一圈) |
stopAutoRotate() | 停止自动旋转 |
snapshot() -> UIImage | 获取View截图 |
PanoView属性列表
属性 | 类型 | 描述 |
---|---|---|
delegate | PanoViewDelegate | 设置delegate |
isPinchEnabled | Bool | 是否开启pinch(默认开启) |
isMotionEnabled | Bool | 是否开启陀螺仪(默认关闭) |
isPitchEnabled | Bool | 是否开启Pitch(默认开启) |
isPanEnabled | Bool | 是否开启Pan(默认开启) |
camera | PanoCamera | 获取场景相机 |
PanoCamera接口列表
接口 | 描述 |
---|---|
rotateBy(x: Float, y: Float, z: Float) | 旋转Camera |
rotateTo(x: Float, y: Float, z: Float) | 旋转Camera |
add(_ anim: CAAnimation, forKey key: String?) | 增加动画 |
removeAnimation(forKey key: String) | 删除动画 |
PanoCamera属性列表
属性 | 类型 | 描述 |
---|---|---|
minPitch | Float | 获取/设置最小Pitch |
maxPitch | Float | 获取/设置最大Pitch |
minFov | Float | 获取/设置最小fov |
maxFov | Float | 获取/设置最大fov |
fov | Float | 获取/设置fov |
PanoViewDelegate接口列表
接口 | 描述 |
---|---|
func panoViewLoadStart(_ view: PanoView) | 场景加载开始 |
func panoViewLoadFinish(_ view: PanoView, error: Error?) | 场景加载结束 |
func panoViewLoadTileFailed(_ view: PanoView, error: Error?) | 瓦片资源加载失败 |
func panoViewPanGestureBegin(_ view: PanoView) | pan手势开始 |
func panoViewPanGestureEnd(_ view: PanoView) | pan手势结束 |
环物
SpinView接口列表
接口 | 描述 |
---|---|
spinTo(row: Int?, column: Int? = nil) | 旋转Row Column |
spinBy(row: Int?, column: Int?) | 旋转Row Column |
spinRound() | 旋转一周 |
pan(to point: CGPoint) | 移动到指定位置(0~1) |
panToCenter() | 移动到中间 |
zoomTo(scale: CGFloat) | 放大当前图片 |
reset() | 重置当前图片 |
add(_ anima: CAAnimation, forKey: String? = nil) | 执行动画 |
removeAnimation(forKey: String) | 删除动画 |
updateConfiguration(config: SpinConfiguration) | 更新当前配置 |
add(hotspot: SpinHotspot) | 增加热点 |
remove(hotspot: SpinHotspot) | 删除热点 |
showHotspot() | 显示热点 |
hideHotspot() | 隐藏热点 |
SpinView属性列表
属性 | 类型 | 描述 |
---|---|---|
delegate | SpinViewDelegate | 设置delegate |
row | Int | 当前Row |
column | Int | 当前Column |
rowCount | Int | 当前行数 |
columnCount | Int | 当前列数 |
scale | Int | 当前缩放 |
isZoomEnabled | Bool | 是否开启zoom(默认开启) |
isPanEnabled | Bool | 是否开启Pan(默认开启) |
isSpinEnabled | Bool | 是否开启Spin(默认开启) |
SpinViewDelegate接口列表
接口 | 描述 |
---|---|
func spinViewLoadStart(_ view: SpinView) | 场景加载开始 |
func spinViewLoadFinish(_ view: SpinView, error: Error?) | 场景加载结束 |
func spinViewLoadCoverFinish(_ view: SpinView, error: Error?) | view cover load finish |
func spinViewLoadTileFailed(_ view: SpinView, error: Error?) | 瓦片资源加载失败 |
func spinViewScaleChanged(_ view: SpinView, scale: CGFloat) | scale变化 |
func spinViewRoundStart(_ view: SpinView) | 旋转一周开始 |
func spinViewRoundFinish(_ view: SpinView) | 旋转一周结束 |
func spinViewPanGestureBegin(_ view: SpinView) | pan手势开始 |
func spinViewPanGestureEnd(_ view: SpinView) | pan手势结束 |
版本变更记录
发布时间 | 功能概述 |
---|---|
2021-10 | 首次发布:支持全景和环物渲染、展示、动画、手势交互等功能 |