Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
程序yang
unidocs-zh
提交
7754c97d
U
unidocs-zh
项目概览
程序yang
/
unidocs-zh
与 Fork 源项目一致
Fork自
DCloud / unidocs-zh
通知
1
Star
1
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
U
unidocs-zh
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
提交
7754c97d
编写于
11月 24, 2022
作者:
DCloud-yyl
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
暂时移除iOS平台内置库DCUTSFoundation章节
上级
1574d7be
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
22 addition
and
101 deletion
+22
-101
docs/plugin/uts-for-ios.md
docs/plugin/uts-for-ios.md
+22
-101
未找到文件。
docs/plugin/uts-for-ios.md
浏览文件 @
7754c97d
...
...
@@ -126,86 +126,7 @@ uts 插件支持依赖三方库,目前仅支持 framework 和 xcframework 静
以 hello uts 中的 uts-tencentgeolocation 腾讯定位插件为例,本插件需要依赖腾讯定位库
`TencentLBS.framework`
,则将依赖库存放到
`~/uni_modules/uts-tencentgeolocation/utssdk/app-ios/Framework/TencentLBS.framework`
位置即可
## 4 iOS 平台内置库 DCUTSFoundation
DCUTSFoundation 为框架内置库,所有 uts 插件都会依赖此基础库
DCUTSFoundation 会封装一些常用方法便于开发者直接调用
使用时需要在 uts 文件中先导入 DCUTS 类,所有方法都通过 DCUTS 类调用
```
ts
// 从 DCUTSFoundation 依赖库中导入 DCUTS 类
import
{
DCUTS
}
from
"
DCUTSFoundation
"
```
### 4.1 getCurrentViewController(): UIViewController
> HBuilderX 版本待确认
获取当前 app 显示的 UIViewController 实例
以 hello uts 中的 uts-alert 为例:
示例文件在 hello uts 中的位置:
`~/uni_modules/uts-alert/utssdk/app-ios/index.uts`
```
ts
export
function
showAlert
(
title
:
string
|
null
,
message
:
string
|
null
,
result
:
(
index
:
Number
)
=>
void
)
{
// uts方法默认会在子线程中执行,涉及 UI 操作必须在主线程中运行,通过 DispatchQueue.main.async 方法可将代码在主线程中运行
DispatchQueue
.
main
.
async
(
execute
=
():
void
=>
{
// 初始化 UIAlertController 实例对象 alert
let
alert
=
new
UIAlertController
(
title
=
title
,
message
=
message
,
preferredStyle
=
UIAlertController
.
Style
.
alert
)
// 创建 UIAlertAction 按钮
let
okAction
=
new
UIAlertAction
(
title
=
"
确认
"
,
style
=
UIAlertAction
.
Style
.
default
,
handler
=
(
action
:
UIAlertAction
):
void
=>
{
// 点击按钮的回调方法
result
(
0
)
})
// 创建 UIAlertAction 按钮
let
cancelAction
=
new
UIAlertAction
(
title
=
"
取消
"
,
style
=
UIAlertAction
.
Style
.
cancel
,
handler
=
(
action
:
UIAlertAction
):
void
=>
{
// 点击按钮的回调方法
result
(
1
)
})
// 将 UIAlertAction 添加到 alert 上
alert
.
addAction
(
okAction
)
alert
.
addAction
(
cancelAction
)
// 打开 alert 弹窗
DCUTS
.
getCurrentViewController
().
present
(
alert
,
animated
=
true
)
})
}
```
#### 4.2 colorWithString(value: string): UIColor
> HBuilderX 版本待确认
将字符串色值转换为 UIColor
格式支持
-
精简写法的十六进制 如:#f00
-
十六进制 如:#ff0000
-
RGB 如:rgb(255, 0, 0)
-
RGBA 如:rgba(255, 0, 0, 0.5)
-
色值关键字,如: red
示例
```
ts
let
bgColor
=
DCUTS
.
colorWithString
(
"
#000000
"
)
view
.
backgroundColor
=
bgColor
```
持续更新中
## 5 swift 与 UTS 差异重点介绍 (持续更新)
## 4 swift 与 UTS 差异重点介绍 (持续更新)
通过上面的章节的阅读。
...
...
@@ -214,11 +135,11 @@ view.backgroundColor = bgColor
但是对于一个熟悉 iOS 开发的 swift 语言者来说,有很多常用的习惯发生了改变,我们会在这个章节特别指出,便于开发者加深认识。
###
5
.1 语法差异
###
4
.1 语法差异
-------------------------------
####
5
.1.1 常量和变量
####
4
.1.1 常量和变量
swift 中用
`let`
来声明常量,用
`var`
来声明变量
...
...
@@ -236,7 +157,7 @@ let str = "abc" // 声明一个字符串变量
const
str1
=
"
abc
"
// 声明一个字符串常量
```
####
5
.1.2 可选类型
####
4
.1.2 可选类型
swift 中的可选类型定义为
`类型?`
...
...
@@ -259,7 +180,7 @@ uts 中也支持在变量名称后面加 ?表示可选类型,这是标准 ts
let
user
?:
string
=
null
```
####
5
.1.3 调用构造方法
####
4
.1.3 调用构造方法
swift 中调用构造方法创建实例对象时不需要使用
`new`
关键字
...
...
@@ -274,7 +195,7 @@ var alert = new UIAlertController()
```
####
5
.1.4 函数参数标签
####
4
.1.4 函数参数标签
在 swift 中方法参数存在标签时使用
`:`
连接在标签和参数值之间,在 uts 中需要使用
`=`
连接
...
...
@@ -291,7 +212,7 @@ var alert = UIAlertController(title: "提示", message: "提示内容", preferre
let
alert
=
new
UIAlertController
(
title
=
"
提示
"
,
message
=
"
提示内容
"
,
preferredStyle
=
UIAlertController
.
Style
.
alert
)
```
####
5
.1.5 枚举值
####
4
.1.5 枚举值
枚举在 swift 中可以忽略枚举类型直接简写
`.枚举值`
,在 uts 中不支持简写,需要完整的写出
`枚举类型.枚举值`
上面的示例中 swift 中最后一个参数 preferredStyle 的值可以简写为
...
...
@@ -307,7 +228,7 @@ UIAlertController.Style.alert
```
####
5
.1.6 类继承
####
4
.1.6 类继承
swift 中定义子类继承父类时需要在子类名称后加上父类名称,中间以冒号
`:`
分隔
...
...
@@ -327,7 +248,7 @@ class Son extends Father {
}
```
####
5
.1.7 遵循协议方法
####
4
.1.7 遵循协议方法
swift 中要让自定义类型遵循某个协议,在定义类型时,需要在类型名称后加上协议名称,中间以冒号
`:`
分隔。遵循多个协议时,各协议之间用逗号
`,`
分隔:
...
...
@@ -345,7 +266,7 @@ class SomeClass implements FirstProtocol, AnotherProtocol {
}
```
####
5
.1.8 系统版本判断
####
4
.1.8 系统版本判断
swift 中系统版本判断的方法
...
...
@@ -364,7 +285,7 @@ if (UIDevice.current.systemVersion >= "10.0") {
}
```
####
5
.1.9 闭包
####
4
.1.9 闭包
swift 中闭包可以简写
...
...
@@ -384,7 +305,7 @@ let action = new UIAlertAction(title="确认", style=UIAlertAction.Style.default
})
```
####
5
.1.10 target-action 方法
####
4
.1.10 target-action 方法
uts 中调用原生中涉及 target-action 的方法时,比如给
`UIButton`
添加点击事件方法、注册通知中心事件方法时注意事项,
...
...
@@ -412,7 +333,7 @@ NotificationCenter.default.addObserver(this, selector = method, name = UIApplica
}
```
####
5
.1.11 字典类型
####
4
.1.11 字典类型
swift 中的 Dictionary 类型,在 uts 中使用 Map 类型代替
...
...
@@ -427,7 +348,7 @@ value["name"] = "uts"
let
map
:
Map
<
string
,
any
>
=
new
Map
()
map
.
set
(
"
name
"
,
"
uts
"
)
```
####
5
.1.12 覆写方法存在参数标签的兼容问题
####
4
.1.12 覆写方法存在参数标签的兼容问题
当覆写系统方法,或实现三方SDK的协议方法时,一些方法可能会存在参数标签的情况
...
...
@@ -471,9 +392,9 @@ tencentLBSLocationManager(manager: TencentLBSLocationManager, @argumentLabel("di
##
6
常见问题(持续更新)
##
5
常见问题(持续更新)
###
6
.1 如何在UTS环境中,获取当前 UIViewController 实例
###
5
.1 如何在UTS环境中,获取当前 UIViewController 实例
参考 Hello UTS 项目中的 uts-alert 插件
...
...
@@ -481,7 +402,7 @@ tencentLBSLocationManager(manager: TencentLBSLocationManager, @argumentLabel("di
> ~/uni_modules/uts-alert/utssdk/app-ios/index.uts
###
6
.2 如何在UTS环境中,操作 UI 线程
###
5
.2 如何在UTS环境中,操作 UI 线程
```
DispatchQueue.main.async(execute=():void => {
...
...
@@ -496,9 +417,9 @@ DispatchQueue.main.async(execute=():void => {
##
7
已知待解决问题(持续更新)
##
6
已知待解决问题(持续更新)
###
7
.1 语法提示问题
###
6
.1 语法提示问题
HBuilderX 目前写iOS uts 插件时部分语法提示会有缺失、参数类型不准确的问题,例如:
...
...
@@ -509,13 +430,13 @@ HBuilderX 目前写iOS uts 插件时部分语法提示会有缺失、参数类
这些问题会在后续版本中优化
###
7
.2 语法不兼容问题
###
6
.2 语法不兼容问题
####
7
.2.1 for 循环语法问题
####
6
.2.1 for 循环语法问题
-
for in 循环目前有语法兼容问题
-
for (int i = 0, i < array.length, i++) 方法目前有语法兼容问题
###
7
.3 类型兼容问题
###
6
.3 类型兼容问题
-
元祖类型目前不支持
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录