首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

如何在iOS中为视频添加多个文字,如图所示?

在iOS中为视频添加多个文字,可以通过使用AVFoundation框架来实现。以下是一种可能的解决方案:

  1. 导入AVFoundation框架:在项目中导入AVFoundation框架,以便使用其中的类和方法。
  2. 视频准备:首先,将要添加文字的视频导入到项目中,并使用AVURLAsset类将其加载到AVAsset对象中。
  3. 文字图层创建:使用CATextLayer类创建文字图层。可以设置文字内容、字体、颜色、大小、位置等属性。
  4. 视频合成:使用AVMutableComposition类创建一个可变的音视频组合对象。将视频轨道和音频轨道添加到组合对象中。
  5. 文字图层添加:将文字图层添加到视频轨道上。可以使用AVMutableVideoComposition类来处理视频轨道,将文字图层添加到视频中的指定时间范围内。
  6. 导出视频:使用AVAssetExportSession类将合成后的视频导出为新的文件。可以设置输出文件的格式、路径等属性。

下面是一个示例代码,演示了如何在iOS中为视频添加多个文字:

代码语言:txt
复制
import AVFoundation

func addTextToVideo(videoURL: URL, textLayers: [CATextLayer], completion: @escaping (URL?, Error?) -> Void) {
    let videoAsset = AVURLAsset(url: videoURL)
    
    let composition = AVMutableComposition()
    guard let videoTrack = composition.addMutableTrack(withMediaType: .video, preferredTrackID: kCMPersistentTrackID_Invalid),
          let audioTrack = composition.addMutableTrack(withMediaType: .audio, preferredTrackID: kCMPersistentTrackID_Invalid) else {
        completion(nil, NSError(domain: "com.example", code: 0, userInfo: [NSLocalizedDescriptionKey: "Failed to create video/audio track"]))
        return
    }
    
    guard let assetVideoTrack = videoAsset.tracks(withMediaType: .video).first,
          let assetAudioTrack = videoAsset.tracks(withMediaType: .audio).first else {
        completion(nil, NSError(domain: "com.example", code: 0, userInfo: [NSLocalizedDescriptionKey: "Failed to load video/audio track from asset"]))
        return
    }
    
    do {
        try videoTrack.insertTimeRange(CMTimeRange(start: .zero, duration: videoAsset.duration), of: assetVideoTrack, at: .zero)
        try audioTrack.insertTimeRange(CMTimeRange(start: .zero, duration: videoAsset.duration), of: assetAudioTrack, at: .zero)
    } catch {
        completion(nil, error)
        return
    }
    
    let videoSize = assetVideoTrack.naturalSize
    
    let videoComposition = AVMutableVideoComposition()
    videoComposition.renderSize = videoSize
    videoComposition.frameDuration = CMTime(value: 1, timescale: 30) // 设置帧率
    
    let instruction = AVMutableVideoCompositionInstruction()
    instruction.timeRange = CMTimeRange(start: .zero, duration: videoAsset.duration)
    
    let layerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: videoTrack)
    instruction.layerInstructions = [layerInstruction]
    
    videoComposition.instructions = [instruction]
    
    for textLayer in textLayers {
        let textInstruction = AVMutableVideoCompositionInstruction()
        textInstruction.timeRange = CMTimeRange(start: .zero, duration: videoAsset.duration)
        
        let textLayerInstruction = AVMutableVideoCompositionLayerInstruction(assetTrack: videoTrack)
        textLayerInstruction.setTransform(assetVideoTrack.preferredTransform, at: .zero)
        textLayerInstruction.setOpacity(0.0, at: videoAsset.duration)
        
        textInstruction.layerInstructions = [textLayerInstruction]
        videoComposition.instructions.append(textInstruction)
        
        let textAnimation = CABasicAnimation(keyPath: "opacity")
        textAnimation.fromValue = 0.0
        textAnimation.toValue = 1.0
        textAnimation.beginTime = AVCoreAnimationBeginTimeAtZero
        textAnimation.duration = CMTimeGetSeconds(videoAsset.duration)
        textAnimation.isRemovedOnCompletion = false
        textAnimation.fillMode = .forwards
        
        textLayer.add(textAnimation, forKey: "textOpacity")
        videoComposition.animationTool = AVVideoCompositionCoreAnimationTool(postProcessingAsVideoLayer: videoLayer, in: videoComposition)
    }
    
    let outputURL = URL(fileURLWithPath: NSTemporaryDirectory()).appendingPathComponent("output.mp4")
    
    guard let exportSession = AVAssetExportSession(asset: composition, presetName: AVAssetExportPresetHighestQuality) else {
        completion(nil, NSError(domain: "com.example", code: 0, userInfo: [NSLocalizedDescriptionKey: "Failed to create export session"]))
        return
    }
    
    exportSession.outputURL = outputURL
    exportSession.outputFileType = .mp4
    exportSession.shouldOptimizeForNetworkUse = true
    exportSession.videoComposition = videoComposition
    
    exportSession.exportAsynchronously {
        switch exportSession.status {
        case .completed:
            completion(outputURL, nil)
        case .failed, .cancelled:
            completion(nil, exportSession.error)
        default:
            break
        }
    }
}

这段代码使用AVFoundation框架创建了一个新的视频,其中包含了多个文字图层。你可以根据需要调整文字图层的属性,如位置、颜色、大小等。最后,通过AVAssetExportSession将合成后的视频导出为新的文件。

请注意,这只是一个示例代码,实际应用中可能需要根据具体需求进行适当的修改和优化。

关于AVFoundation框架的更多信息和详细说明,你可以参考腾讯云的相关文档和示例代码:

希望这些信息对你有所帮助!

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

高性能且灵活的 iOS 视频剪辑与特效开源框架 – VideoLab

整体工作流如图所示,接受指令,把原视频帧通过合成器,生成合成后的帧,输出给播放器或者导出器。让我们聚焦到合成器,我们有多个原始帧,需要处理并输出新的一帧。...我们可以自由的设置图层参数,Transform,Audio,也可以在右边区域自由的移动图层,达到灵活的组合效果。针对每个图层,AE里还可以添加一组特效。...转化为VideoRenderLayer后的第二步是将VideoRenderLayer视频轨道添加到AVComposition。...添加音频轨道的第二步,将AudioRenderLayer视频轨道添加到AVComposition,对于RenderLayer的Source包含音频轨道的AudioRenderLayer,从Source...获取音频AVAssetTrack,添加到AVComposition。

1.6K20

WebRTC视频数据流程分析

本文来自《WebRTC Native开发实战》书籍作者许建林在LiveVideoStack线上分享的内容,详细分析总结 WebRTC 的视频数据流程,并对大型项目如何快速上手:分析方法,如何在工作按需进行定制开发或调试分析问题等内容进行了深入解读...例如下图是iOS的代码,首先找到外部的API,代码RTCCameraVideoCapture是用来实现相机采集的,然后就可以看类是如何调用接口和处理数据的。...在安卓或者linux可能会有多个分支,一个预览一个编码,这里我们以编码为主干进行分析。...举例如图所示 ,我们需要修改RTCPeerConnection文件,其中所定义WebRTC的主类。...如图所示,它是对api/peer_connection_interface的一个子类,一个具体集成的实现类,我们其增加接口,但是在这里我们不在peer_connection_interface的类调用录制相关的代码

2.9K63
  • 教你轻松在React Native中集成统计的功能

    如果大家想通过视频学习如何在React Native中集成统计功能,可以点这里查看 iOS 友盟支持通过Cocoapods来添加统计sdk的依赖,如果你的Mac还没有安装Cocoapods,则可以通过...YOUR_APP_KEYappkey 需要替换为您在友盟后台申请的应用Appkey,Channel ID推广渠道名称,这个可以根据需要进行自定义,:GooglePlay 最基本使用 上述配置完成之后...我们只需在MainActivity.java添加如下代码即可完成session的统计。...如果大家想通过视频学习如何在React Native中集成统计功能,可以点这里查看 第三步:高级功能 在上文中我们已经完成了统计sdk的集成、配置以及最基本的使用(如果大家想通过视频学习如何在React...告诉大家一个好消息,大家精心准备的React Native视频教程发布了,大家现可以看视频学React Native了。

    6.4K40

    【愚公系列】《AI智能化办公:ChatGPT使用方法与技巧从入门到精通》 017-用 ChatGPT 生成视频(AI视频制作主流工具介绍)

    文字和字幕:可添加文字和字幕,自定义字体、颜色、位置、动画效果,提供更多信息、注释或创造视觉效果。 调整视频速度:允许加快或减慢视频播放速度,创建慢动作或快进效果,增加吸引力和创意。...D-id平台现面向大众提供Web版数字人生成服务,其用户界面如图所示 D-id平台官网:https://www.d-id.com/ 以下是D-id的主要功能与特点的整理: 文字视频:根据用户提供的文字描述和文案...3.剪映和 D-id的区别与特色 在AI视频生成的实际操作,用户通常会同时使用多个平台来达到不同的创作目的。...D-id: 主要功能是文字视频和静态图片转视频,利用生成式AI技术将文本或静态图片转换为逼真的虚拟数字人视频。 主要用途是营销、教育、开发和CX领域的专业人士及内容创作者提供数字人生成服务。...D-id: 主要适用于数字人形式视频,用于创建宜传视频、教育培训视频、交互式学习内容,以及客户提供个性化的视频体验等场景。

    12610

    【愚公系列】《AI智能化办公:ChatGPT使用方法与技巧从入门到精通》 019-用 ChatGPT 生成视频(D-id平台+ChatGPT生

    欢迎 点赞✍评论⭐收藏 前言 以下是对D-id平台的功能和使用方法的整理: D-id 是一个操作简便的AI数字人视频生成平台,专注于将文字描述及静态照片转换为高度逼真的虚拟数字人视频。...技术的进步我们提供了前所未有的创作工具,开启了艺术探索的新领域。同时,我们也必须谨慎考虑伴随这些变化而来的道德和法律问题。...让我们拥抱这一技术带来的无限可能,同时也深思如何在这个快速发展的领域中,保持艺术的真诚和深度。 谢谢大家!...进人视频制作页面后,单击“ADD”按钮,弹出文件选择框,选择前文已准备好的人像图片上传,上传成功的图片将会出现在预览窗口中,如图所示。...将前文中运用ChatGPT生成的演讲文案粘贴在“Script”(讲稿)文本框如图所示

    10520

    iOS 9人机界面指南(四):UI元素(下)- 腾讯ISUX

    4.3.2 添加联系人按钮 添加联系人按钮让用户将现有联系人添加到文本框或者其它文字视图中。 ? API注释 想要了解如何在代码定义添加联系人按钮,请参考UIButton....API注释 想要了解如何在代码定义添加日期时间选择器,请参考UIDatePicker....API注释 想要了解如何在代码定义信息按钮,可以参考UIButton. iOS包含了两种信息按钮样式:适用于浅色内容上的深色按钮,以及适用于深色内容上的浅色按钮。...4.3.12圆角矩形按钮 iOS7及更新版本已经不再使用圆角矩形按钮,而是使用了新的系统按钮——类型UIButtonTypeSystem的UI按钮 (UIButton) 。...4.3.17 系统按钮 系统按钮执行app定义的行为。 ? API提示: 在iOS 7,UIButtonTypeRoundedRect已经被重新定义 UIButtonTypeSystem.

    13.2K30

    H5直播避坑指南

    自动播放问题 通过autoplay属性 视频的自动播放需要在video标签上添加autoplay属性, : 但是在很多浏览器里,iOS下并不支持这个属性...页面内联播放问题 在iOS Safari和一些安卓的一些浏览器下播放视频的时候,不能在h5页面播放视频,系统会自动接管视频 如果需要在h5页面内播放视频,需要在视频标签上加上 webkit-playsinline...视频的高度问题 在安卓下,一些浏览器QQ浏览器和UC浏览器,系统会把视频的层级调到最高,所以如果想在页面上显示dom元素,都会被视频盖住,单纯的设置该dom的z-index是无效的,如图所示 ?...视频的默认播放图标 在iOS下会有一个默认的播放图标,如图所示 ?...,那么这个方法会使浏览器完全接管视频播放,如图所示 ?

    10.9K151

    H5直播避坑指南

    自动播放问题 通过autoplay属性 视频的自动播放需要在video标签上添加autoplay属性, : 但是在很多浏览器里,iOS下并不支持这个属性...页面内联播放问题 在iOS Safari和一些安卓的一些浏览器下播放视频的时候,不能在h5页面播放视频,系统会自动接管视频 如果需要在h5页面内播放视频,需要在视频标签上加上 webkit-playsinline...视频的高度问题 在安卓下,一些浏览器QQ浏览器和UC浏览器,系统会把视频的层级调到最高,所以如果想在页面上显示dom元素,都会被视频盖住,单纯的设置该dom的z-index是无效的,如图所示 [1498530055801...视频的默认播放图标 在iOS下会有一个默认的播放图标,如图所示 [1498530097883_6310_1498530097791.png] 在iOS都会默认显示,不能通过js控制,但是可以通过css样式将其隐藏...,那么这个方法会使浏览器完全接管视频播放,如图所示 [1498530657116_1050_1498530656629.jpg] 这种接管的后果是这时的我们是没有办法控制视频的播放,也没有办法在上面浮动我们的

    5.4K130

    H5 直播避坑指南

    自动播放问题 通过autoplay属性 视频的自动播放需要在video标签上添加autoplay属性, : 但是在很多浏览器里,iOS下并不支持这个属性...页面内联播放问题 在iOS Safari和一些安卓的一些浏览器下播放视频的时候,不能在h5页面播放视频,系统会自动接管视频 如果需要在h5页面内播放视频,需要在视频标签上加上 webkit-playsinline...视频的高度问题 在安卓下,一些浏览器QQ浏览器和UC浏览器,系统会把视频的层级调到最高,所以如果想在页面上显示dom元素,都会被视频盖住,单纯的设置该dom的z-index是无效的,如图所示 ?...视频的默认播放图标 在iOS下会有一个默认的播放图标,如图所示 ?...,那么这个方法会使浏览器完全接管视频播放,如图所示 ?

    2.8K90

    自动化-Appium-第一个Demo-原生(Python版)

    例如:模拟器示例Android_App_Simulator,真机示例Android_App_RealMachine 如图所示: 2、创建app文件夹,用来存放应用程序。...可以输入中文字符,默认为false desired_caps['unicodeKeyboard'] = True # 在设定了`unicodeKeyboard`关键字运行Unicode测试结束后,将键盘重置其原始状态...例如:模拟器示例IOS_App_Simulator,真机示例IOS_App_RealMachine 如图所示: 2、打开项目解释器(PyCharm--->Preferences......要想在IOS模拟器运行应用,则必须在Xcode编译时选择模拟器类型,编译生成的文件后缀.app (2)如果是在真机上运行,需要装.ipa的应用程序文件。分为正式版和开发版。...要想在IOS模拟器运行应用,则必须在Xcode编译时选择模拟器类型,编译生成的文件后缀.app (2)如果是在真机上运行,需要装.ipa的应用程序文件。分为正式版和开发版。

    2.1K20

    Android短视频系统开发技巧:给Button的点击上色

    在短视频系统开发的UI设计,按钮一般都会有多个状态,比如:聚焦、点击等,不同的状态必须显示不同的呈现形式(比如颜色、形状的改变),这样用户才能感觉到按钮被成功选中、点击了,否则用户体验就会非常差了。...如图所示: 但是,如果想为短视频系统开发Button添加自定义的图片背景,: android:background="@drawable/upload" 那么,当你点击Button的时候会发现,...多张背景图片切换 首先,视频系统开发Button准备两张背景图片,一张是Button未点击时显示的图片,另一张是Button被点击时显示的图片,如图所示: 然后,在工程的res/drawable目录下创建一个...这种方法是比较直观简单的方法,在实际的工程也大量使用,但也有一个缺陷,必须所有的Button准备多张背景图片,每一个状态准备一张,加大了短视频系统开发UI设计的工作量,也加大了程序的大小。...,Button的点击动态改变背景,主要通过selector来实现,而具体的呈现形式可以通过多个图片背景切换,或者通过Shape标签来定义。

    1.2K10

    告别被拒,如何提升iOS审核通过率(下篇)——应用内容检查大法与提审资源检查大法

    应用内容检查大法 苹果对庸俗、赌博、暴力、成人内容、支付等元素把控严格,如何在应用内容的检查过程躲开苹果审核的刀锋,本篇大家揭开这部分的审核要点。...本文按照审核的维度列出如下两个模块讲述: 一、文字内容检查 二、应用内容检查 一 文字内容检查 此部分的审核,腾讯预审小组重点覆盖应用的公告、活动,游戏类的邮件、新手指引、剧情对白等界面,同时还覆盖应用链接的官网...【经典案例】 【案例3】《项目C》x.x.1版本,在提审过程,苹果审核人员发现应用内的某角色,存在明显的抖胸动作,以低俗理由,拒绝了该版本。 ?...二 预览视频检查 此部分的审核,我们重点覆盖视频的内容、文字、大小、压缩格式、数据速率、帧率等规格属性,详细的检查项如下: ?...【案例分享】集结iOS审核失败常见原因,丰富案例您提供参考依据。 【专家服务】腾讯专家团队您分析各种疑难杂症,提出最优解决方案。

    1.2K40

    iOS开发常用之网络

    LTNavigationBar - LTNavigationBar导航栏添加动态着色效果,可自定义其背景色.Demo包含:1。变换背景色; 2。滚动视图,导航栏和状态栏重叠。...LCUIKit - 一个按钮上面既有图标又有文字。也许左icon右文字,或者上图标下文字。 TwitterPaggingViewer - 多个Tableview,左右滑动。...LxGridView-oc LxGridView-swift - 利用UICollectionView模仿iOS系统桌面图标的交互,作用动图。...HYBImageCliped - 可给任意继承UIView的控件添加任意多个圆角,可根据颜色生成图片且可带任意圆角,给UIButton设置不同状态下的图片且可带任意圆角,给UIImageView设置任意图片...更赞的是额外附了详细开发教程如何在Swift制作Tinder-Like Koloda动画网页链接 .Yalantis出品动画程序款款精品。

    23.6K10

    自动化-Appium-第一个Demo-原生(Java版)

    2、首先获取模拟器设备标识,命令行输入命令 adb devices 如图所示,只查询到1台此模拟器,在脚本里可以不用添加此参数 capabilities.setCapability("udid", "...方式二:开启Appium Desktop 打开Appium Desktop 服务IP和端口默认的情况下,直接点击Start Server v1.6.5来开启Appium服务,如图所示。...方式二:开启Appium Desktop 打开Appium Desktop 服务IP和端口默认的情况下,直接点击Start Server v1.6.5来开启Appium服务,如图所示。...要想在IOS模拟器运行应用,则必须在Xcode编译时选择模拟器类型,编译生成的文件后缀.app (2)如果是在真机上运行,需要装.ipa的应用程序文件。分为正式版和开发版。...要想在IOS模拟器运行应用,则必须在Xcode编译时选择模拟器类型,编译生成的文件后缀.app (2)如果是在真机上运行,需要装.ipa的应用程序文件。分为正式版和开发版。

    2.1K30

    【愚公系列】《AI智能化办公:ChatGPT使用方法与技巧从入门到精通》 018-用 ChatGPT 生成视频(剪映+ChatGPT生成视频

    账号注册流程 文案素材准备步骤 视频生成方法 此外,结合ChatGPT进行前期文字准备,用户可以重点应用剪映的AI视频生成功能,从而更好地编辑和制作视频内容。...一、剪映+ChatGPT生成视频 1.文案与素材准备 要使用剪映的AI视频生成功能,需要先在其官方网站下载并安装剪映客户端,本书将以 Windows版客户端例,读者演示操作步骤。...2.视频的生成与调整 本小节将在前文已生成文案的基础上,读者演示剪映软件的视频调整与生具体操作步骤如下。 打开剪映软件,单击软件首页的“图文成片”按钮,进人文案输入界面,如图所示。...在文案输人界面输人已准备好的文案,选择喜欢的“朗读音色参数,“萌娃”,单击“生成视频”按钮,进行视频生成、如图所示 单击字幕部分需要编辑的片段,右上方参数框同步跳转,在参数框对相应字幕参数进行调整...单击配音部分需要编辑的片段,右上方参数框同步跳转,在参数框对相应配音参数直接调整,完成配音片段编辑,如图所示

    12010

    iOS 9人机界面指南(一)下篇:UI设计基础 - 腾讯ISUX

    (译者注:以上视频截图,完整视频请点击观看) 谨慎地增加动画,特别是在那些无法提供沉浸式体验的应用。过多和无理由的动画会阻碍应用的流畅性,降低性能,还会分散用户在操作的注意力。...1.9 品牌推广(Branding) 成功的品牌推广不仅仅包括在应用添加品牌元素。优秀的应用应该通过创建独特的外观和感觉来用户提供愉悦、难忘的体验。...为了在iOS感觉舒适,你的应用虽然不必看起来跟内置的一样,但是需要对它的遵从、清晰度和深度(欲了解更多,参见1 iOS而设计(Design for iOS))进行整合。...另外,你可以通过增加较小文字的权重和减小较大文字的权重,在多个不同字号的、相邻的标签建立视觉凝聚。字体权重在内容的整体风格和表达中有重要影响,因此你可以选择特定的权重来达到设计目的。...最好的与iOS整合的方式便是深刻地了解iOS的主题与核心——这一部分在上文iOS而设计(Designing for iOS)部分已有详细描述,并寻求出如何在你的应用融合与表达这种主题。

    1.8K21

    一文看完 WWDC 2022 音视频相关的更新要点丨音视频工程示例

    : MetalView、Renderer、ContentView 接下来,则是在这个流程添加 EDR 支持,包括 3 个步骤: 1、初始化 MetalView 时,添加 EDR 配置; 2、每次渲染动作前...此外,还探讨了视频对 Live Text 特性的支持,这个特性可以让我们从视频帧中直接识别和复制出文字,此外还介绍了如何在我们的应用中集成插片广告和播放速度控制能力。...3)视觉智能 新的播放器可以支持像处理其他文本一样获取视频文字: 获取视频画面文字 4)插片广告 新的 iOS 播放器开始支持插片广告了,其中 HLS 流协议对插片广告的支持在前面 HLS...MPNowPlayingSession 可以用来表示不同的播放会话,并在应用包含多个播放会话时,提供对 NowPlaying 状态的控制,支持手动发布元数据,并在 iOS 16 后支持自动发布元数据。...下面是未开启面部驱动的自动对焦和自动曝光和开启后的对照: 开启面部驱动自动对焦的前后对照 开启面部驱动自动曝光的前后对照 3)高级视频采集流 iOS 16 和 iPadOS 16 的新增功能,应用程序可以同时使用多个

    2.6K10

    ScreenFlow for mac(最强大的屏幕录像软件)v10.0.7英文激活版

    Screenflow for mac是Mac OS平台上一款优秀的屏幕录像软件,不但可以录制桌面操作还可以进行后期的剪辑工作,可以添加字幕, 增加视频效果与文字效果等功能,支持输出成 MOV,FLV 等格式...内置素材库直接从 ScreenFlow 项目中访问超过 500,000 个独特的图像、音频和视频剪辑,您的视频增添趣味。iOS 录音录制您的 iPhone 或 iPad 屏幕以获得高质量的应用演示。...强大的视频编辑工具使用过渡、文本动画、视频动画、手绘注释、多声道音频等您的视频添加专业润色。专业动画和动态图形使用内置的视频和文本动画制作图形、标题和徽标的动画。...隐藏式字幕支持使用 ScreenFlow 的字幕编辑器工具您的视频添加、编辑甚至刻录符合 ADA 标准的软字幕。...更多发布选项将您的视频直接发布到少数热门内容托管网站之一, Imgur、Wistia、Youtube、Vimeo 等!

    83520

    自动化-Appium-​第一个Demo-Web(Python版)

    2、首先获取模拟器设备标识,命令行输入命令 adb devices 如图所示,只查询到1台此模拟器,在脚本里可以不用添加此参数 desired_caps['udid'] = ' 192.168.176.101...如果是多台设备,如图所示,查询到2台(1台模拟器192.168.176.101:5555、1台真机MYV0215825000026),在脚本就要添加此参数 desired_caps['udid'] =...:5555的模拟器里,打开要操作的浏览器,本章示例Android默认的浏览器,之后打开百度首页,此时在PC的Chrome浏览器可以看到百度首页的访问链接,如图所示,模拟器里的默认浏览器版本号为44.0.2403.119...的真机里,打开要操作的Chrome浏览器,本章示例已经在真机安装完成的Chrome浏览器,之后打开百度首页,此时在PC的Chrome浏览器可以看到百度首页的访问链接,如图所示,真机里的Chrome浏览器版本号为...例如:模拟器示例IOS_Web_Simulator,真机示例IOS_Web_RealMachine 如图所示: 2、打开项目解释器(PyCharm--->Preferences...

    2.4K10
    领券