![](https://img-blog.csdnimg.cn/2021050401321162.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
SwiftUI 笔记
记录个人项目中遇到的各种问题和解决办法
Vik1ll
这个作者很懒,什么都没留下…
展开
-
更优雅地调试SwiftUI—借助LLDB
LLDB 注入代码的功能固然强大,但是如果我们无从知晓在 LLDB 中操纵的变量是实际的变量还是那个“影子变量”,无法明确判断编译器何时做出了优化,这个功能无疑成为了一把达摩克利斯之剑。在 Objective-C 中,调试器中的变量和代码运行时的变量确实是同一个变量,指向同一个内存地址,因此在 LLDB 中修改变量自然与在代码中修改变量等价。很完美,在要发布的 App 中使用私有 API 肯定不是明智之举,借助 LLDB 正好帮我们避免了这点,Xcode 在打包时会排除掉开发者设置的断点信息。原创 2023-08-09 19:40:56 · 5501 阅读 · 0 评论 -
SwiftUI 自定义一个以 View 作为参数的 ViewModifier
自定义一个 sheet ,当 iOS 版本为 16.0 以上时,可以指定弹出 sheet 的高度,而当 iOS 版本为 16.0 以下时,弹出的 sheet 为默认高度。在需要使用自定义 sheet 的 View 中,使用。这里我们使用了 Swift 的泛型来实现。这样,我们只需要在 View 中使用。即可调用自定义的 sheet 了。参数为我们指定的高度占屏幕的比例。modifier 即可。为自定义的 sheet 内容,sheet 的官方声明如下。因此我们必须向它传递。原创 2023-03-13 11:53:28 · 547 阅读 · 0 评论 -
SwiftUI 将一个 ScrollView 中的 content 转为 image
在 iOS 16 / macOS 13 之前,将任何一个 View 转为 image 需要借助或编写相关代码实现,而随着 Apple 在 iOS 16.0 / macOS 13 后发布了新的 API — ImageRenderer 后,仅需一行代码就能将一个 View 转为 image。下面我们将借助类将一个 ScrollView 中的 content 转为 image,即使 content 的高度高于屏幕高度,这种方法仍然可将全部的 content 转为 image。原创 2023-03-13 11:22:27 · 426 阅读 · 0 评论 -
SwiftUI解决Text文本显示不全的问题
有时候在SwiftUI中当Text中字符串过长时,会出现显示不全文末出现...的现象,解决办法就是为Text加上一个modifier即可:.fixedSize(horizontal: false, vertical: true)原创 2021-08-03 12:35:31 · 2199 阅读 · 0 评论 -
跨View访问AppStorage中的变量
将AppStorage这个wrapper套在变量上时,就是将这个变量保存在UserDefaults中,而后者的域是整个APP,因此在任何一个View中(不管它们是父子关系、同级关系或是其他关系)都可以访问同一个变量,代码如下:struct MainView: View { var body: some View { TabView { SubView1() SubView2() } }}struct原创 2021-07-30 17:59:47 · 155 阅读 · 0 评论 -
SwiftUI 解决tabView子View可以滚动的问题
问题描述如标题原因分析在SwiftUI中,tabView可能是基于ScrollView或者会为其子View自动套用ScrollView,其子View既可以水平滚动,也可以纵向滚动。问题解决手动为tabView embed一个ScrollView,然后禁用它的bounce属性,例如:var body: some View { ScrollView { TabView(selection: $currentTabIndex) {原创 2021-07-30 01:25:38 · 760 阅读 · 0 评论 -
SwiftUI获取屏幕尺寸
需要借助UIKit来实现。例如,创建一个一半屏幕宽度和屏幕高度的圆角矩形:RoundedRectangle(cornerRadius: 25.0) .frame(width: UIScreen.main.bounds.size.width / 2.0, height: UIScreen.main.bounds.size.height / 2.0)NOTE: 当ScrollView不能正常滚动时,可以用此方法解决...原创 2021-07-24 22:42:33 · 1186 阅读 · 0 评论