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

Mac开发跬步积累(五): Dark Mode下适配你的UI界面

图片来自Apple官方 在macOS 10.14中,苹果在系统本身样式(Light (aqua) appearance )基础推出了暗黑模式(dark appearance),这种模式下可以更突出显示应用窗口中的内容...,让用户的关注焦点聚集在App本身的视图中以便获取更佳的视觉体验.关于AppKit中的系统视图,苹果默认已经进行了暗黑模式适配升级,但对于许多自定义的View,还是需要我们花一点点间处理的. 0x00...NSWindow会继承App的appearance效果; NSView会继承其父类或者NSWindow的appearance效果; 开发者可以设置App的整体或者部分的appearance效果; Appkit...根据appearance变化时自动调用drawingHandler中的代码进行图片创建,从而实现适配效果; 0x03: 自定义View 适配(NSView) 改变当前的appearance,AppKit...切换,应避免耗时操作 切换系统的Appearance,AppKit会同时更新UI控件,这部分工作通常都是自动完成的.但有时也会调用开发者编写的代码,例如你使用了NSImage的draw handler

2.2K20

APPKIT打造稳定、灵活、高效的运营配置平台

这里主要涉及到两种情况: 资源上线 ? 资源上线后 ? 4.4 监控层 APPKIT-SDK运行在业务机器,这里就涉及到多台机器的数据一致性问题。...为什么有这样的需求?举一个简单的业务场景实例,以外卖为例,在新版本10.0的时候做了一个全新的外卖频道页面,其链接信息与老版本的完全不同,这里我们就需要按版本的不同配置两条不同的内容信息。...数据处于流程中,用户可以通过扫描二维码加入到测试用户名单,可对处于审核流程中的数据进行预览,用美团、大众点评App查看上线后实时效果,其实现的数据流如下: ?...这里有两条线路,其一为SDK在请求数据,带上数据的accessTime时间戳,APPKIT服务会根据accessTime时间戳判断SDK本地数据是否过期。...accessTime时间超过24小,说明这个运营位在一天内都没有使用,可以从本地内存中进行删除。其二为SDK定期进行监控上报,上报SDK本地缓存的数目,这样可以对SDK本地缓存进行监控和告警。

1.2K30
您找到你想要的搜索结果了吗?
是的
没有找到

Swift 周报 第三十九期

周报精选 新闻和社区:卖不动了 iPhone 在美国市场销量或陷入停滞 提案:在导入声明使用访问级别修饰符 Swift 论坛:讨论从头开始的基本 HTTP 客户端 推荐博文:用示例解释了 Swift...提案 通过的提案 SE-0409[2] 在导入声明使用访问级别修饰符 提案通过审查。该提案已在 三十八期周报 正在审查的提案模块做了详细介绍。 SE-0408[3] 包迭代 提案通过审查。...回答 我刚刚发现并修复了 39 个案例,模块中包含大量 Swift 文件,我们会看到这种情况发生。(大量宏展开也可能发生)。...复制粘贴扩散这样一个基本的数字类型似乎有点愚蠢,它已经在标准库中,只需要发布它即可。不过,我怀疑这已经是实现这一目标的目标,所以我希望问题只是:预计到达时间?...不过,您可以将整个事情包装在立即执行的闭包中,使其成为一个表达式: return """ { #if canImport(AppKit) NSColor(named: \(argument

23120

AttributedString——不仅仅让文字更漂亮

AttributedString——不仅仅让文字更漂亮 在WWDC 2021,苹果为开发者带来了有一个期待已久的功能——AttributedString,这意味着Swift开发人员不再需要使用基于Objective-C...AttributedString vs NSAttributedString AttributedString基本可以看作是NSAttributedString的Swift实现,两者在功能和内在逻辑差别不大...•appKit可以在AppKit下被渲染的属性•accessibility适用于无障碍的属性,用于提高引导访问的可用性。...在swiftUI、uiKit和appKit三个scope中存在很多的同名属性(比如foregroundColor),在访问需注意以下几点: •Xcode无法正确推断该适用哪个Scope中的属性,请显式标明对应的...因此在转换即使只指定单一框架,foundation和accessibility的属性也均可正常转换。我们在自定义Scope,最好也遵守该原则。 let nsString = try!

3.8K40

肘子的 Swift 周报 | Swift,超越苹果生态!

当用户查询某个音乐风格,应用便会把这个查询作为消息发送给 Claude 3 Haiku,后者随后以流式的形式返回推荐数据。 对我而言,对 AI 的应用一直局限于辅助工具。...,尤其是背景色与文字颜色对比度不足。...在转向 AppKit 的过程中,他探讨了一些鲜为人知的 AppKit 组件,如 NSTableHeaderCell 等,并通过 NSViewRepresentable构建了 SwiftUI 与 AppKit...文章中,作者强调他的目的并非是要比较 SwiftUI 与 AppKit 的性能优劣,或者质疑 SwiftUI 在 macOS 的应用适用性。...实际,该应用的复杂模板编辑器几乎完全使用 SwiftUI 开发,且表现出色。这一点彰显了 SwiftUI 在实际应用中的强大潜力和灵活性。

11910

我庆幸果断放弃了SwiftUI:它还不够成熟

他发表了一篇博客,总结了尝试并放弃 SwiftUI 的过程,这篇文章在 Hacker News 引发了开发者们的大量讨论: “恕我直言,SwiftUI 是一个很好的机会,但苹果公司对它投资不足。...但在开始实现更复杂的检查器视图,特别是涉及带有 / 不带步进器或颜色选择器的多个文本字段,整个运行速度开始剧烈下降。...变更从一种环境传播至另一环境,我也遇到了类似的延迟问题。这可以说是压死骆驼的最后一根稻草了,我决定放弃 SwiftUI,继续用 AppKit。...这可能是我在这个项目做过的最明智的选择。...年黑进 40 多家金融机构老板赚百万获刑 |Q 资讯 在阿里达摩院搞了四年数据库,我来聊聊实际情况 | 卓越技术团队访谈录 30 年 IT 老兵谈数字化:这就不是个技术活 资深 Web 开发的经验之谈:为什么你开发的网页不应该大于

4.9K20

在SwiftUI中使用UIKit视图

生命周期 SwiftUI同UIKit和AppKit的主要区别之一是,SwiftUI的视图(View)是值类型,并不是对屏幕绘制内容的具体引用。...SwiftUI递归到这些原始类型,将结束递归,它将不再关心原始类型的body,而让原始类型自行对其管理的区域进行处理。 SwiftUI框架通过将body定义为Never来标记该View为原始类型。...public protocol UIViewRepresentable : View where Self.Body == Never 事实几乎所有的原始类型都是对UIKit或AppKit的底层包装。...image-20210823091321562 查看源代码 避免滥用UIKit包装 尽管在SwiftUI中使用UIKit或AppKit并不麻烦,但是当你打算包装一个UIKit控件(尤其是已有SwiftUI...希望本文能对你学习和了解如何将UIKit组件导入SwiftUI提供一点帮助。

8.1K22

如何判断 ScrollView、List 是否正在滚动中

),调用此方法在 SwiftUI 中,很多的视图控件是对 UIKit( AppKit )控件的二次包装。...没有事件,Runloop 会进入休眠状态,而有事件,Runloop 会调用对应的 Handler。Runloop 与线程是绑定的。...待 SwiftUI 更多的底层实现不再依赖 UIKit( AppKit )之时,才会是它 API 的爆发期。希望本文能够对你有所帮助。...我正以聊天室、Twitter、博客留言等讨论为灵感,从中选取有代表性的问题和技巧制作成 Tips ,发布在 Twitter 。...每周也会对当周博客的新文章以及在 Twitter 发布的 Tips 进行汇总,并通过邮件列表的形式发送给订阅者。订阅下方的 邮件列表[9],可以及时获得每周的 Tips 汇总。

3.7K40

Swift入门:怎样安装Xcode和创建Playground

下载,我可以向您解释一些绝对的基础知识: iOS是在所有iPhone和iPad(最新的iPad运行iPad OS,本质还是iOS)运行的操作系统的名称。...Swift 4.2官方是对swift4.0的一个小的更新,但实际在Swift 5发布之前,它提供了许多新的功能来填补这个空白。...AppKit是苹果的macOS用户界面工具包。像UIKit一样,它包含了按钮、文本框等内容,尽管它关注的是macOS而不是iOS。 Cocoa Touch是苹果iOS的大量框架集合的常用名称。...这是最基本的——如果Xcode还没有完成下载,那为什么不在等待的时候看一些Taylor Swift的视频呢?本教程中的示例肯定会更有意义… 安装了Xcode?好啊!... Swift 看到两条这样的斜线,它会忽略掉线后面的所有东西。这通常用于注释:您在代码中写入的注释,以帮助您理解它以后的作用。

6.1K10

Swift 中的热重载

工作流 SwiftUI 只需要两行字就可以使任何 SwiftUI 启用实时编程,而您这样做,您将拥有比使用 Swift Previews 更快的工作流程,同时能够使用实际的生产数据。...看看这个开发工作流程有多快吧,告诉我你宁愿在我每次接触代码等待Xcode的重新构建和重新部署。 UIKit / AppKit 我们需要一种方法来清理标准命令式UI框架的代码注入阶段之间的状态。...我们把我们想迭代的类包装在父级,因此我们不修改要注入的类型,而是改变父级的调用站点。...像 MVVM / MVC 这样的标准架构可以获得免费的逻辑注入,重新编译你的类,方法重新执行时,你已经在使用新代码了。...如果您切换到我们的 TCA 分支(我们保持最新),你可以在 UI 和 TCA 层使用 Inject 。 它有多可靠? 没有什么是完美的,但我已经使用它十多年了。

1.9K20

macOS 应用注入开发简介与实践

通过对目标软件实现注入,主要有几个目的: 增加扩展功能(例如常见的各种应用插件) 免费的使用App应用的一些限制功能(比如一些vip功能) 软件破解(这个目的貌似比较多些) 0x02 注入的方式有哪些整体,...与类型 设置Cocoa 在HelloLib.m中编写代码: HelloLib.m代码 这段代码仅仅实现了HelloLib类在被加载到内存中向控制台输出一句话...下面我们来给HelloLib添加一些增强功能: 首先我们使用这个Aspects库来简化一些运行时代码,最终HelloLib.m文件如下 #import "HelloLib.h" #import #import "Aspects.h" @implementation HelloLib + (void)load{ NSLog(@"==============HelloLib...@"Text Already changed from HelloLib"; } error:nil ]; } 在HelloLib中,我们hook了目标应用中的viewDidLoad方法,这样App

3.1K30

解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

众所周知,SwiftUI 是一个响应式框架,这意味着,数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示,应直接对状态进行修改。...这些控件基本都是对 UIkit(AppKit)的二次包装。Sheet执行下面的代码,你可以清楚地看到,在通过手势取消 Sheet ,与其关联的状态是在 Sheet 完成取消动画后才发生了改变。...视图正在滚动返回一层视图会导致应用崩溃这是一个由 xiaogd 在我的 Discord 论坛中提出的 问题。...请至少进入第三级视图滚动当前视图视图处于滚动状态,点击 NavigationStack 左上角的 “Back” 按钮。...状态更新滞后不仅存在于本文介绍的两个案例中,开发者遇到类似情况,可以尝试采用状态更新优先的开发策略进行修改。总结今年 SwiftUI 已经进入了第五个年头。

606110

解析 SwiftUI 中两处由状态更新滞后引发的严重 Bug

众所周知,SwiftUI 是一个响应式框架,这意味着,数据源发生变化时,框架会自动更新视图。同样,当我们想调整视图显示,应直接对状态进行修改。...视图变化在前、状态变化在后 在 SwiftUI 中,某些可编程控件在执行一定的操作,会先更新视图,待视图变化完成后再修改与其对应的状态。这些控件基本都是对 UIkit(AppKit)的二次包装。...(动画结束),立即在屏幕由左至右滑动,返回一层视图 在滑动返回到上一层视图后,应用会锁死。...视图正在滚动返回一层视图会导致应用崩溃 这是一个由 xiaogd 在我的 Discord 论坛中提出的 问题[3]。...请至少进入第三级视图 滚动当前视图 视图处于滚动状态,点击 NavigationStack 左上角的 “Back” 按钮。

28820

为什么SwiftUI的视图使用结构体?

如果您曾经为UIKit或AppKit(Apple的iOS和macOS原始用户界面框架)编程,您会知道它们使用类而非结构体来构造视图。...我之所以说性能因素,是因为很多人认为这是SwiftUI使用结构体的主要原因,而实际这只是更大范围的一部分。...通过生成不会随时间变化的视图,SwiftUI鼓励我们转向更具功能性的设计方法:在将数据转换为UI,我们的视图变成简单的,惰性的东西,而不是会失去控制的智能化的东西。...您查看可以作为视图的事物,可以看到这一点。我们已经使用了Color.red和LinearGradient作为视图——包含很少数据的简单类型。...实际,您不能找到比使用Color.red作为视图的更好的主意:除了“用红色填充我的空间”之外,它不包含任何信息。

3.1K10

为什么 SwiftUI 的视图使用结构体

如果您曾经为 UIKit 或 AppKit(Apple 的 iOS 和 macOS 原始用户界面框架)编程,您会知道它们使用类而非结构体来构造视图。...我之所以说性能因素,是因为很多人认为这是 SwiftUI 使用结构体的主要原因,而实际这只是更大范围的一部分。...通过生成不会随时间变化的视图,SwiftUI 鼓励我们转向更具功能性的设计方法:在将数据转换为 UI ,我们的视图变成简单的,惰性的东西,而不是会失去控制的智能化的东西。...您查看可以作为视图的事物,可以看到这一点。我们已经使用了 Color.red 和 LinearGradient 作为视图——包含很少数据的简单类型。...实际,您不能找到比使用 Color.red 作为视图的更好的主意:除了“用红色填充我的空间”之外,它不包含任何信息。

2.4K50

macOS AppKit 的事件响应简介

图片来自网络 在AppKit中的事件都处于一个响应的链条中,这个链条是由一个叫做NSResponder 的类定义的,这个响应链条其实是一个列表,它里面装满了能够响应用户事件的对象.当用户点击鼠标,或者按下键盘的某个键...从另一种意义讲,应用程序是被事件(event)驱动的: 它从runloop的事件队列中获取一个事件(NSEvent) 派发事件(NSEvent)到合适的对象(Object) 事件被处理完成后,再取下一个事件...(或这组)键,就相当于选中了菜单栏或者点击了控件对象....这种事件通常是指预先将种操作通过按键绑定机制[Text System Defaults and Key Bindings](Text System Defaults and Key Bindings)绑定到某个具体的物理按键,...这个按钮被按下,执行特定的方法,比如 pageDown:, moveToBeginningOfLine: 和capitalizeWord:.

2.6K60

WWDC笔记 - Advancements in the Objective-C Runtime

Objective-C 是一门古老的语言,诞生于 1984 年,跟随 Apple 一路浮沉,见证了乔布斯创建了 NeXT,也见证了乔布斯重回 Apple 重创辉煌,它用它特立独行的语法,堆砌了 UIKit,AppKit...类被 Runtime 加载之后,类的结构会发生一些变化,在了解这些变化之前,我们需要知道2个概念: Clean Memory:加载后不会发生更改的内存块,class_ro_t属于Clean Memory...我们把焦点放在 AppKit 库中的init方法。...[image] 我们使用最高位代表 Tagged Pointer 标识位,最低位 3 位标识 Tagged Pointer 的类型,接下去的位来表示包含的数据(可能包含扩展类型字段),为什么我们使用高位指示...ARM 的 Tagged Pointer,而不是像 Intel 一样使用低位标记?

1.4K1815
领券