原创 iOS 17:告別ObservableObject,迎來@Observable

自iOS 17(iPadOS 17, macOS 14)之後,SwiftUI 提供了一種新的宏:@Observable。 可以把它當做是 ObservableObject 的優化版。在系統版本允許的情況下,我們應該優先使用@Observab

原创 ViewRepresentable用法之Coordinator模式

從UIKit/AppKit轉到SwiftUI,其實是模式上的轉換。 UIView/NSView常以代理(delegate)接收事件的方式與界面通信,而SwiftUI通過“值”變化直接響應界面事件。 爲了實現這種“UIKit/AppKit事件

原创 pyautogui 屏幕倍率的坑

在我的2倍屏設備上,鼠標移動不準確。 直接上演示代碼 import pyautogui screenSize = pyautogui.size() print(screenSize) # 輸出:Size(width=1512, heigh

原创 pyautogui locateCenterOnScreen和locateOnScreen不生效

如果傳入了正確的圖片,卻無法在屏幕中找到定位,則可能是因爲權限問題,導致pyautogui無法獲取到窗口截圖。 請參照:https://www.cnblogs.com/ZJT7098/p/17695865.html

原创 Mac執行pyautogui.screenshot()時報錯

報錯信息 --------------------------------------------------------------------------- TypeError

原创 Mac執行pyautogui.screenshot()只能截取桌面背景

明明有程序窗口在前臺,卻只獲取到桌面背景。 如果無法正確的獲取截屏,那麼pyautogui.locateCenterOnScreen或pyautogui.locateOnScreen等函數都無法正確執行。 原因很簡單,就是權限問題。 應將屏

原创 從源碼編譯OpenCV

從源碼編譯的原因 官方已經有編譯好的包可下載:https://opencv.org/releases/ 但是在iOS項目中集成官方編譯的pack(目前爲 4.8.0),出現以下錯誤: ld: in /.../opencv2.framewor

原创 SwiftUI 界面的自我關閉(dismiss)

使用dismiss環境變量 NavigationStackView、Sheet等產生的次級界面,可使用 @Environment(\.dismiss) var dismiss 自行控制消失。 struct DetailView: View

原创 SwiftUI 邊框border

基礎需求 使用border()修飾器,可設置顏色及線條寬度。 Text("Hello World") .padding() .background(Color.orange)

原创 SwiftUI 使用contentShape()控制點擊區域

當我們向一個view添加TapGesture時,就會發現“有內容”的區域是可以點擊的。“有內容”指的是有圖片、文字、背景顏色的區域。而空白區域,是不能觸發點擊回調的。 比如: struct ContentView: View { v

原创 SwiftUI iOS 16 新的導航類型

棄用NavigationView iOS 16, iPadOS 16, macOS 13 之後,Apple優化了導航行爲,將NavigationView細分爲 NavigationStack 和 NavigationSplitView。 如

原创 SwiftUI 將toolbar的內容提取爲成員變量

因爲toolbar的內容通常寫起來是比較長的,且括號比較多,導致body看起來很凌亂。因此我習慣於把toolbar的內容提取成變量。 關鍵:修飾符@ToolbarContentBuilder 和 返回值some ToolbarContent

原创 git如何忽略歷史中的文件

因爲 .gitignore 只能忽略那些原來沒有被提交推送過的文件,如果某些文件已經被納入了版本管理中,則修改.gitignore是無效的。 需先使用 git rm --cached刪除文件的追蹤 比如,從版本管理中移除名爲“Context

原创 SwiftUI View初始化複雜數據

問題重現 @State不生效 struct ProductDetailView: View { @State private var product: ProductModel init(refId: String) {

原创 SwiftUI Binding數據類型轉換

方式一 (使用extension爲結構體擴展目標類型) https://ootips.org/yonat/swiftui-binding-type-conversion/ struct MyView: View { @State p