如何在 Apple Watch 上绘制自定义图形?

2024-02-24

如何在 Apple Watch 上绘制自定义图形?

如果我理解正确的话,我们只能在 Apple Watch 上使用图像和标准控件。如果是这样,是否可以在内存中的图像上绘制自定义图形,然后将这些图像放到屏幕上?


In watchOS2你可以借鉴WKInterfaceImage使用一些CoreGraphics.

作为参考,请查看 AwesomewatchOS2 采样器 https://github.com/shu223/watchOS-2-Sampler

绘制图像的示例:

 // Create a graphics context
    let size = CGSizeMake(100, 100)
    UIGraphicsBeginImageContext(size)
    let context = UIGraphicsGetCurrentContext()

    // Setup for the path appearance
    CGContextSetStrokeColorWithColor(context, UIColor.whiteColor().CGColor)
    CGContextSetLineWidth(context, 4.0)

    // Draw lines
    CGContextBeginPath (context);
    CGContextMoveToPoint(context, 0, 0);
    CGContextAddLineToPoint(context, 100, 100);
    CGContextMoveToPoint(context, 0, 100);
    CGContextAddLineToPoint(context, 100, 0);
    CGContextStrokePath(context);

    // Convert to UIImage
    let cgimage = CGBitmapContextCreateImage(context);
    let uiimage = UIImage(CGImage: cgimage!)

    // End the graphics context
    UIGraphicsEndImageContext()

    image.setImage(uiimage)

使用贝塞尔路径的示例:

  // Create a graphics context
    let size = CGSizeMake(100, 100)
    UIGraphicsBeginImageContext(size)
    let context = UIGraphicsGetCurrentContext()

    // Setup for the path appearance
    UIColor.greenColor().setStroke()
    UIColor.whiteColor().setFill()

    // Draw an oval
    let rect = CGRectMake(2, 2, 96, 96)
    let path = UIBezierPath(ovalInRect: rect)
    path.lineWidth = 4.0
    path.fill()
    path.stroke()

    // Convert to UIImage
    let cgimage = CGBitmapContextCreateImage(context);
    let uiimage = UIImage(CGImage: cgimage!)

    // End the graphics context
    UIGraphicsEndImageContext()

    image.setImage(uiimage)

最后显示 SVG袖珍SVG https://github.com/arielelkin/PocketSVG

  // Create a graphics context
    let size = CGSizeMake(512, 512)
    UIGraphicsBeginImageContext(size)
    let context = UIGraphicsGetCurrentContext()

    // Setup for the path appearance
    UIColor.yellowColor().setFill()

    // Convert SVG -> CGPath -> UIBezierPath
    let pocketSvg = PocketSVG(fromSVGFileNamed: "sample")
    let path = pocketSvg.bezier
    print(path)
    path.fill()

    // Convert to UIImage
    let cgimage = CGBitmapContextCreateImage(context);
    let uiimage = UIImage(CGImage: cgimage!)

    // End the graphics context
    UIGraphicsEndImageContext()

    image.setImage(uiimage)
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何在 Apple Watch 上绘制自定义图形? 的相关文章

  • 使用 FFT 执行音频分析

    我已经被这个问题困扰好几天了 并且浏览了几乎所有相关的 StackOverflow 页面 通过这次活动 我现在对 FFT 是什么及其工作原理有了更深入的了解 尽管如此 我在将其实现到我的应用程序中时遇到了极大的困难 简而言之 我想做的是为我
  • 使用 iOS swift AVPlayer 在横向模式下不全屏

    我将视频视图设置为全屏 然而 在模拟器中玩时 它并没有全屏运行 此问题仅适用于 iPad 不适用于 iPhone 这是我的代码 override func viewDidAppear animated Bool super viewDidA
  • iOS 视频压缩 Swift iOS 8 损坏的视频文件

    我正在尝试压缩用户相机从 UIImagePickerController 拍摄的视频 不是现有视频 而是动态视频 以上传到我的服务器 并花费少量时间来完成此操作 因此较小的尺寸是理想的选择 而不是 30 较新质量的相机为 45 mb 这是在
  • prepareForSegue 和 PerformSegueWithIdentifier 发送方

    我想知道标题中的函数如何工作以及发送者参数 假设单击按钮调用了performSegue方法 那么这是否也调用了prepareSegue方法 是否在performSegue方法之前但在按下按钮之后调用prepareSegue方法 另外 这两个
  • Swift Firebase - 如何在使用 queryOrdered(byChild: ).queryEqual(toValue: ) 时获取所有 k/v

    root reviews postABC postId reviewXYZ I want everything under this reviewUID buyerUID 01010 text fast shipping responseT
  • 从 Firestore Swift 获取文档 ID

    我正在尝试从中获取文档IDFirestore通过执行这样的查询 func updateStatusInFirestore let orderid saleOrder first Orderid print orderid let setti
  • Carthage 更新错误:“GitHub API 请求失败:凭据错误”

    这是我的购物车文件 Kanna HTML parsing library github tid kijyun Kanna gt 1 0 0 Realm database ORM github realm realm cocoa 当我跑步时c
  • Xcode 6.4 Swift 单元测试无法编译:“GPUImage.h 未找到”“无法导入桥接标头”

    我的 Xcode 项目构建并运行良好 它有 Swift 和 Objective C 代码 它已安装 GPUImage 我向它添加了单元测试 现在它将不再编译 找不到 GPUImage h 文件 导入桥接标头失败 以下是我发现并尝试过的解决方
  • 预乘 Alpha 合成

    我正在尝试实现预乘阿尔法混合 在本页 什么是颜色混合 https learn microsoft com en us previous versions windows xna bb976070 v xnagamestudio 41 它们确
  • 如何在 Safari 上打开本地 html 文件?

    我想打开本地 html 文件Safari集成到我的Swift 3应用 我知道如何使用网址来做到这一点 这是我用来执行此操作的代码 let encodedString url addingPercentEncoding withAllowed
  • 如何快速防止标签中出现孤儿?

    我有一个可以有一两行的标签 如果它有两行 我希望第二行至少有两个 或者可能三个 单词 而不仅仅是一个 关于如何使用 swift 实现这一点有什么想法吗 提前致谢 Daniel 编辑 我删除了我愚蠢的第一个想法 这些想法并没有真正的帮助 好吧
  • UIApplication.shared.delegate 相当于 SceneDelegate xcode11?

    我在 SceneDelegate 中定义了一个 let 属性 我希望一些 ViewController 能够在场景中访问它 在 UIKit 中 我可以像这样访问 App Delegate 属性 UIApplication shared de
  • 如何像谷歌日历一样将单元格的内容滚动到表格视图中的另一个单元格中?

    我希望用户界面像谷歌日历那样进入桌面视图 它在不同的行中显示相同的日期事件 但是当您向上或向下滚动时 左侧的日期也会向上向下滚动 Can you please help me how to achieve this Please take
  • let/var 如何解决可变性? [复制]

    这个问题在这里已经有答案了 我没有任何问题 我只是想对有关可变性的问题进行一些澄清 在 Objective C 中我们会使用例如NSMutableArray得到一个可变数组和NSArray得到一个不可变的 我对两者的内部运作了解不多 但据我
  • 如何使用 SwiftUI 获取多个屏幕上的键盘高度并移动按钮

    以下代码获取键盘显示时的键盘高度 并将按钮移动键盘高度 在转换源 ContentView 和转换目标 SecibdContentView 处以相同的方式执行此移动 但按钮在转换目标处不移动 如何使按钮在多个屏幕上移动相同 import Sw
  • 保存来自 TrueDepth 相机的深度图像

    我正在尝试保存 iPhone X TrueDepth 相机的深度图像 使用AVCam照片滤镜 https developer apple com library content samplecode AVCamPhotoFilter Lis
  • NSURLCache 不缓存

    我正在使用 Xcode 6 1 6A1030 iOS7 和 iOS8 模拟器 NSURLCache 似乎没有缓存任何东西 我使用 Cache Control 标头 我的服务器返回带有 max age 6000 的 Cache Control
  • 如何将CIFilter应用到UIView上?

    根据Apple docs 过滤属性CALayer不支持iOS 当我使用正在申请的应用程序之一时CIFilter to UIView即 Splice Funimate 和 Artisto 的视频编辑器 Videoshow FX 这意味着我们可
  • Swift:协议、结构、类

    我开始学习 Swift 语言 但在理解协议 结构和类方面遇到了困难 我来自 Android 方面的编程 所以我相信 Swift 协议基本上是 Java 接口 其中每一个的正确用例是什么 这些类比并不 完全 正确 但这就是我所理解的要点 是的
  • 循环多个 UIAlertController

    在某些情况下 我的应用程序需要显示多个警报消息 错误消息在启动时收集 并且需要一次向用户显示一条 当第一个被确认后 应该呈现下一个 问题在于 显然 它们都试图同时执行 有没有一种聪明的方法可以同步执行此操作 这是一些简单描述我想要做的事情的

随机推荐

  • Twitter Bootstrap 嵌套网格放置列

    这可以在 Twitter Bootstrap 中使用相同的标记通过操作行 列类来完成吗 我已经为不同的尺寸设置了单独的标记 理想情况下 我想要一个标记 并使其针对较小的屏幕适当折叠 大视野 Two One
  • 支持作业批处理的排队系统(例如,一名工人同时处理多个作业)

    我正在寻找一个可以支持以下场景的排队系统 客户端添加一个作业 检查某个特定 url URL1 有多少 Facebook 点赞 客户端添加了另一个作业 检查 URL2 的相同信息 一名工作人员从队列中选取 1 到 50 个工作 网址 例如 如
  • VS Code Code Runner 不适用于 virtualenvs

    我无法让 Code Runner 扩展与 virtualenvs 一起使用 每当我尝试运行导入仅安装在 virtualenv 中而不是全局 Python 安装中的库的代码时 我都会收到导入错误 在终端中运行完全相同的代码是可行的 我使用的是
  • 生成 BKS 密钥库并存储应用程序密钥

    我应该创建一个 BKS 密钥库并存储一个私有应用程序密钥 该密钥是一个 48 个字符长的字符串 我还有一个 JCEKS 密钥库 其中已包含此密钥值 如果我尝试使用 portecle 工具转换为 BKS 类型密钥库 则密钥条目会丢失 我是 J
  • 为什么我的程序集需要按特定顺序加载?

    我正在编写一个简单的插件并偶然发现contractType IsAssignableFrom pluginType https msdn microsoft com en us library system type isassignabl
  • 为 nltk 解析树生成语法规则

    如果我有这句话 Mary saw a dog 以及以下内容 pos tags NNP VBD DT NN 是否可以生成这句话的语法规则 以便可以生成解析树 下面的语法是使用的语法规则nltk parse cfg sent Mary saw
  • R 中的 strptime 错误:输入字符串太长

    我似乎无法将数据从 csv 转换为正确的日期类 我使用的是包含 1033 个日期的 csv 我已将 CSV 保存为 YYYYMMDD 格式 这是我导入 csv 的代码 似乎有效 bd lt read csv birthdaysExample
  • 用其内容替换组件 - 角度 2 [重复]

    这个问题在这里已经有答案了 我正在寻找一种方法来拥有仅以其内容呈现的组件 例如 给定组件 Component selector my cmp template div my cmp div class MyComponent 使用 angu
  • Google Analytics 缺少analytics.js 脚本

    我被困在复制谷歌分析跟踪代码问题上 看起来 Google Tag Assistant 没有考虑我从为网站生成的 GA 跟踪 JS 中复制的代码 该网站位于http www orchid co nz http www orchid co nz
  • 如何让用户保持登录状态?迅速

    我正在使用 firebase 进行登录 我需要知道如何保持登录状态直到注销 我听说过 UserDefaults 但我不确定如何使用它 这是我的登录视图控制器 import FirebaseAuth import FirebaseFirest
  • strip_tags 和 html_entity_decode 组合无法按预期工作

    从昨天起我一直在与这个问题作斗争 不幸的是没有任何效果 不完全是 我找到了某种解决方法 经过一些研究和重读文档后我仍然有点目瞪口呆和困惑 假设有一个丑陋的字符串 它已经有正确的 html 编码的特殊字符 像这样 exampleString
  • 是否可以在没有 Axon Server Enterprise 的情况下扩展 Axon Framework

    是否可以在没有 Axon Server 的情况下扩展 Axon Framework企业 我有兴趣使用 Axon 创建原型 CQRS 应用程序 但最终的可部署系统必须免收许可费用 如果 Axon Framework 无法使用免费软件扩展到六个
  • Java Android 激光条码扫描器

    我正在尝试开发一个能够读取条形码 1d 而不是 qr 的应用程序 真正的问题是 常见的条形码阅读器软件非常有用 但它们似乎太慢 无法作为非常频繁和常见的功能使用 这些条形码相当长 有 20 30 位数字 对于 zxing 等应用程序来说似乎
  • 从java中的plsql函数获取返回的记录类型

    我有一个plsql返回记录类型的函数challan rec create or replace package xx bal api as type challan rec is record challan number varchar2
  • THREE.js JSONLoader 回调

    在 THREE js 中 如果我多次调用 JSONLoader 来加载多个对象 如下所示 简化示例 function init var loader new THREE JSONLoader loader load mesh1 js cre
  • React form onChange->setState 落后一步

    我在构建网络应用程序时遇到了这个问题 我在这个中复制了它jsfiddle http jsfiddle net terda12 270Lf0x9 本质上 我想要一个输入来调用this setState message input val 每次
  • Git/SVN 用于 asp.net 开发而不是 VSS?

    在工作中 我们使用ASP net 2 0和VSS VSS 是一个野兽 我们不断地遇到人们检查文件的问题 而且没有分支 让它变得疯狂 我知道 SVN GIT 主要由开源开发人员使用 那么 ASP NET 开发人员使用它有什么缺点吗 我一直在内
  • 如何使用MomentJS将自定义日期设置为react-datepicker的DatePicker?

    我已将日期存储在数据库中 我可以成功获取日期 但是当涉及到将任何特定日期设置为 DatePicker 时反应日期选择器 https www npmjs com package react datepicker 我无法设定那个日期 这是我用来
  • 模拟会话在 MVC 5 中不起作用

    我将值存储在正在测试的控制器操作的会话中 我读过几篇关于如何模拟会话的文章 我正在尝试实现 Milox 的答案在单元测试中设置 httpcontext 当前会话 https stackoverflow com questions 96242
  • 如何在 Apple Watch 上绘制自定义图形?

    如何在 Apple Watch 上绘制自定义图形 如果我理解正确的话 我们只能在 Apple Watch 上使用图像和标准控件 如果是这样 是否可以在内存中的图像上绘制自定义图形 然后将这些图像放到屏幕上 In watchOS2你可以借鉴W