Files
aistream-test/UTS 插件工程/uni_modules/uts-advance/utssdk/app-ios/index.uts
T
2025-11-27 20:48:18 +08:00

234 lines
4.7 KiB
Plaintext

import { UIImageView , UIImage , UIScreen } from 'UIKit';
import { DispatchQueue } from 'Dispatch';
import { UTSiOS } from "DCloudUTSFoundation";
export function addViewToDecorView() { }
export function removeViewToDecorView() { }
export function initAppLifecycle() { }
export function getLogoPath() {}
export function playAssetAudio(){}
/**
* 定时任务参数封装
*/
export type TimerOptions = {
/**
* 定时任务开始的回调
* @res 回调参数
*/
start: (res: string) => void;
/**
* 定时任务执行的回调
* @res 回调参数
*/
work: (res: string) => void;
};
export type TimerResult = {
name : string;
taskId ?: number;
};
/**
* 执行延时任务
*/
export function doTimerTask(opts:TimerOptions): TimerResult {
opts.start('doTimerTask start');
setTimeout(function() {
opts.work("doTimerTask work");
}, 2000);
const result: TimerResult = {
name: "doTimerTask"
}
return result
}
/**
* 执行周期任务
*/
export function doIntervalTask(opts:TimerOptions): TimerResult {
let taskRet = setInterval(function() {
opts.work("doIntervalTask work");
}, 2000);
opts.start('doIntervalTask start');
const result: TimerResult = {
name: "doIntervalTask",
taskId: taskRet
}
return result
}
/**
* 清除周期任务
*/
export function clearIntervalTask(taskId:number):TimerResult {
clearInterval(taskId);
const result: TimerResult = {
name: "clearIntervalTask"
}
return result
}
/*
* 保存全局数据信息
*/
class AdvanceModuleGloabInfo {
static imageView?: UIImageView = null
}
/**
* 将h5资源路径转成app本地资源路径
*/
export function getResourcePath(path: string) {
const imagePath = UTSiOS.getResourcePath(path)
console.log(imagePath)
if (AdvanceModuleGloabInfo.imageView == null) {
let vc = UTSiOS.getCurrentViewController()
// uts方法默认会在子线程中执行,涉及 UI 操作必须在主线程中运行,通过 DispatchQueue.main.async 方法可将代码在主线程中运行
DispatchQueue.main.async(execute=():void => {
// 创建imageView
let imageView = new UIImageView()
let image = new UIImage(contentsOfFile = imagePath)
imageView.image = image
// 添加imageView并设置frame
vc.view.addSubview(imageView)
let imageSize: CGFloat = 80.0
let midx = (UIScreen.main.bounds.size.width - imageSize) / 2
let midy = (UIScreen.main.bounds.size.height - imageSize) / 2
imageView.frame = CGRect(x = midx, y = midy, width = imageSize, height = imageSize)
AdvanceModuleGloabInfo.imageView = imageView
})
}
}
export function removeExampleImageView() {
DispatchQueue.main.async(execute=():void => {
if (AdvanceModuleGloabInfo.imageView != null) {
AdvanceModuleGloabInfo.imageView!.removeFromSuperview()
AdvanceModuleGloabInfo.imageView = null
}
})
}
/**
* add since 2023-06-19
* 新增传参测试用例
*/
export function inputArray(input : Array<string>) : boolean {
let inputStr = JSON.stringify(input)
if ('["a","b","c"]' == inputStr) {
return true
}
return false
}
export type ParamOptions = {
title : string,
array : Array<string>
}
export function inputParam(option : ParamOptions) : boolean {
console.log(option, "传入的参数")
let inputStr = JSON.stringify(option)
console.log(inputStr, 'stringify option')
if ('{"array":[1,2,3],"title":"hello"}' == inputStr) {
return true
}
return false
}
export function returnArray() : Array<string> {
return ['1', '2', '3']
}
export function returnParam() : ParamOptions {
let ret : ParamOptions = {
title: "returnParam",
array: ['1', '2', '3']
}
return ret
}
export type ParamCallback = (res : ParamOptions) => void
export type ArrayCallback = (res : Array<string>) => void
export function callbackArray(callback : ArrayCallback) {
callback(['8', '8', '8'])
}
export function callbackParam(callback : ParamCallback) {
let ret : ParamOptions = {
title: "callbackParam",
array: ['4', '5', '6']
}
callback(ret)
}
/**
* 打印测试方法
*/
export function logStrTest() {
console.log("logStrTest 字符串打印测试")
}
export function logFloatTest() {
console.log(3.1415926)
}
export function logIntTest() {
console.log(2023)
}
export function logObjectTest(){
let ret : ParamOptions = {
title: "logObjectTest",
array: ['1', '2', '3']
}
console.log(ret)
}
export function logFunctionTest(){
let testFun = function(){
console.log("testFun")
}
console.log(testFun)
}
export class User {
private name : string;
private age : Int;
constructor(hostP : string, port : Int) {
this.name = hostP;
this.age = port;
}
describeSelf():string{
let text = "name = " + this.name + ";age = " + `${this.age}`
return text
}
}