
SwiftUI
SwiftUI
风浅月明
有问题的可以留言。邮箱地址:1296817932@qq.com
展开
-
[SwiftUI]启动页LaunchScreen.storyboard中适配状态栏加安全区域的高度
这就意味着,在LaunchScreen.storyboard中若是相对Safe Area约束图片的话,我们会丢失一个20px的状态栏高度。如下图,我有一个需求。要求从启动页切换到引导页时,这两张相同的图片的过渡要无缝衔接,就是要求两图的位置约束一摸一样。在iPhone X之前的设备,会丢失一个状态栏的高度20px,会导致启动页上这张图片会比引导页上的图片偏上20px.如下图,为了解决上面的问题,我们还需要将UIView的顶部约束添加为20px. 图中,红色区域部分将会在iPhone X以下的设备消失。原创 2024-02-20 23:26:04 · 973 阅读 · 0 评论 -
[SwiftUI]自定义下划线
系统有一个下划线修饰,但最低只支持到iOS16。下面自定义一个下划线,以便在iOS14上使用。原创 2024-02-20 15:10:29 · 520 阅读 · 0 评论 -
[SwiftUI]使用Path绘制各种图形
用直线绘制一个矩形的三条边,然后最后一条边用圆形曲线去绘制,然后填充整个图形。// 定义矩形的起点// 绘制矩形的顶部边// 绘制矩形的右侧边// 绘制矩形的底部边(只绘制一部分,为了圆弧留出空间)// 添加圆形曲线作为最后一条边// 圆心最右测为0度或360度,最左侧为180度,最下侧为90度,最上侧为270度或-90度// clockwise true:逆时针绘制 false:顺时针绘制// 回到起点闭合路径.fill(Color.blue) // 填充路径。原创 2024-02-02 13:51:18 · 1502 阅读 · 0 评论 -
[SwiftUI]本地通知
使用本地通知,在开关开启时请求权限,若通知权限是拒绝状态就弹窗通知去设置开启。先创建一个通知管理器,请求通知权限、检查通知权限 和 创建通知内容。状态为true时,随后调度通知,只有在权限开启时APP才能收到通知。注意,APP进入后台或者杀掉APP都能收到推送通知信息。原创 2024-02-02 12:29:10 · 755 阅读 · 0 评论 -
[SwiftUI]APP评分
以前都是直接使用SKStoreReviewController.requestReview(),不过现在报警告了。虽然警告,但在高版本上现在使用还是有效的,就怕以后突然某个版本完全失效了。方法已经被弃用,苹果推荐开发者使用新的 App Store Review API 来提示用户进行评分。新的 API 要求你在。从 iOS 14 开始,原创 2024-02-02 11:20:17 · 971 阅读 · 0 评论 -
[SwiftUI]使用UIActivityViewController来实现系统分享功能
来实现系统分享功能。由于 SwiftUI 目前没有直接提供类似的视图或修饰符,你需要使用。协议来创建一个可以在 SwiftUI 视图中使用的。接下来,在你的 SwiftUI 视图中,你可以使用。在 SwiftUI 中,你可以使用。注意,你要分享的内容应该是能够被。首先,你需要创建一个遵循。协议的结构体,用于包装。原创 2024-02-02 10:39:56 · 1024 阅读 · 0 评论 -
[SwiftUI]页面跳转
你可以创建一个自定义的触发器,例如一个自定义的视图,当点击时,展示 Sheet。}) {自定义TabView的样式,比如修改标签栏的背景色、字体颜色等。通过直接访问UITabBar的appearance方法来改变标签栏的背景色。这种方法适用于更改全局的样式,但需要注意这种更改影响到整个 app 的TabView样式。init() {// 自定义 TabBar 的样式TabView {Text("首页").tabItem {Text("首页")Text("设置").tabItem {原创 2024-01-28 16:48:20 · 3472 阅读 · 0 评论 -
[SwiftUI]设置启动图
新建了一个SwiftUI工程,工程目录如下。默认目录中移除了LaunchScreen.storyboard,想着Apple肯定有设置启动图的替代方案了,就找了一半天。先说结果,新方案有Bug,还是得使用LaunchScreen.storyboard的方式设置启动图。原创 2024-01-27 23:38:16 · 1405 阅读 · 0 评论 -
[SwiftUI]系统弹窗和自定义弹窗
OverlayOverlay是一个视图修饰符,它可以用来在现有视图上层添加一个新的视图层。// 弹窗的显示状态VStack {// 主视图内容// 在这里使用 .overlay 添加弹窗.overlay(// 判断是否显示弹窗// 弹窗的视图VStack {Spacer()// 弹窗内容VStack {.padding().padding()Spacer()// 背景遮罩ZStack是一个用来叠加视图的容器,它可以让你在同一个屏幕坐标空间中放置多个视图。当你使用。原创 2024-01-27 22:14:47 · 4654 阅读 · 0 评论 -
[SwiftUI]自定义Loading和Toast
如图,自定义耗时加载转圈等待和Toast文本提示,以及弹出动画。自定义比较简单,自己按需写一套就不用去导入相关的第三方库了。代码如下。原创 2024-01-26 23:25:45 · 1124 阅读 · 0 评论 -
[SwiftUI]Text对字符串中部分字符改变颜色和字体
实例都保持其自己的样式设置。这种方式可以正常编译并运行,同时支持文本换行。在 SwiftUI 中合并带有不同样式的文本,应该使用不同的。如图,需要对字符串中部分字符改变颜色和字体。实例并将它们合并起来。运算符合并起来,每个。原创 2024-01-26 22:35:53 · 729 阅读 · 0 评论 -
[SwiftUI]Text使用自定义字体
在 SwiftUI 中,要使用自定义字体,您需要首先确保字体文件已经被正确添加到您的项目中,并且在项目的 Info.plist 文件中注册了字体。2.确保在添加字体时选择了 "Copy items if needed" 选项,并且字体文件已经被添加到了应用的 target。要获取正确的 PostScript 名称,您可以在 macOS 的字体册应用中打开字体文件,然后查看字体的信息。在这个数组中,添加你的字体文件的名称,包括其扩展名,例如。4.在你的 SwiftUI 视图中,使用。文件中,添加一个新条目。原创 2024-01-26 16:33:52 · 1023 阅读 · 0 评论 -
[SwiftUI]修改状态栏文字颜色
UIStatusBarStyle设置为Light Content后,APP的状态栏字体颜色仍然是黑色没变成白色。这种方式有个问题,改成深色模式后将完全改变当前页面的配色方案,会导致开发者去为更多的内容适配深色模式。,这允许每个视图控制器控制自己的状态栏样式。:尝试在顶层视图中指定颜色方案,例如,使用。可以让状态栏变为白色。原创 2024-01-26 15:11:13 · 700 阅读 · 0 评论 -
[SwiftUI]TextEditor自动弹出关闭键盘以及不让键盘遮挡编辑区域
代码如下,就这样点击按钮弹出一个编辑页面。编辑页面,主要就自定义导航栏和编辑器TextEditor。编辑页面,主要就自定义导航栏和编辑器TextEditor。1.避免导航被遮挡和键盘遮挡编辑区域要想让TextEditor编辑时,页面不上移遮挡住导航栏,并且键盘不遮挡住输入框,我们需要将TextEditor放在滚动视图ScrollView中。注意:不要使用.edgesIgnoringSafeArea修饰符,忽略安全区域后TextEditor在编辑时,键盘不会自动将ScrollView撑高,这样键盘原创 2024-01-24 16:41:23 · 1419 阅读 · 0 评论 -
[SwiftUI]@Binding可选对象如何传值
在 SwiftUI 中,您不能直接将 nil 传递给 @Binding 参数,因为 nil 不是一个 Binding 类型。@Binding 要求的是一个绑定到某个值的引用,即使这个值是可选的。如果你将非空对象绑定过去,会报错:Cannot convert value of type 'Binding' to expected argument type 'Binding原创 2024-01-23 13:39:03 · 945 阅读 · 0 评论 -
[SwiftUI].sheet(isPresented:content:)中为页面绑定数组中的对象出现数据错误的问题
具体来说,我点击按钮绑定对象,第一次打印editRow=1,但是弹出页面绑定的数据却是“0”。从第二次点击开始绑定就正常了, 打印什么弹出页面绑定的就是什么。使用.sheet(item:content:)可以解决数据不实时的问题。提取出来的代码如下,今天我开发时发现了这个问题。就算是延迟弹窗,第一次仍然会绑定错误。原创 2024-01-23 00:02:49 · 497 阅读 · 0 评论 -
[SwiftUI]删除Binding数组中最后一条数据时报错Swift/ContiguousArrayBuffer.swift:600: Fatal error: Index out of range
如果数据源在视图更新期间改变了,那么 SwiftUI 可能会尝试访问一个已经不存在的索引,从而导致崩溃。当数组被修改(比如删除了最后一个元素)时,如果你试图用一个已经不存在的索引去访问数组,就会出现"Index out of range"的错误。在拥有删除功能时,不要用索引去获取数组中的对象进行绑定。是获取数组中符合特定条件的元素索引的最简洁和最直观的方法。但是,根据不同的场景和性能要求,其他方法也可能会有所帮助。为了提高效率,如果你的数组很大,你可以使用。是安全的,也就是说,它会根据。原创 2024-01-22 14:07:38 · 710 阅读 · 0 评论 -
[SwiftUI]自定义滚动菜单栏进行PageView页面切换
只需使用ScrollViewReader包裹ScrollView,然后在ScrollView添加onChange中指定元素居中。基础实现代码如下,点击菜单和滚动页面进行翻页都能正常工作,见示意图。上面的效果比较差,下面进一步优化,为菜单栏选中按钮添加跟随效果。先从左到右点击菜单栏中的按钮,然后在从右到左滑动内容进行翻页。先从左到右点击菜单栏中的按钮,然后在从右到左滑动内容进行翻页。如图,自定义一个菜单栏,要求点击菜单按钮和滚动翻页步调统一。原创 2024-01-21 17:45:42 · 1270 阅读 · 0 评论 -
[SwiftUI]HStack中放多个Picker不平分区域以及Picker在父视图之外还能滚动问题的修复
这个问题,网上推荐给Picker添加.clipped()和.compositingGroup()修饰,以及给ZStack添加.contentShape(Rectangle()),但这些方式都没让我的问题得到解决。如上图,想要滚动左边第一个Picker实际却滚动了中间第二个Picker,想要滚动第二个picker实际却滚动了第三个picker。代码如下,给Picker限制宽度后,虽然修复了上面区域平分问题,但又产生了一个新问题(下面的问题二)。之内,这样它们将在隔离的滚动视图中,可能减少触摸事件的冲突。原创 2024-01-17 14:19:40 · 570 阅读 · 0 评论 -
[SwiftUI]contentShape的用法
是一个修饰符,它用于定义视图可点击区域的形状。默认情况下,视图的可点击区域通常限于其可见内容的边界。但是,有时我们希望扩大或改变这个区域,例如在一个包含Spacer的HStack中,可能需要整个水平区域都能响应点击,即使其中有部分是看不见的空白空间。以下是。原创 2024-01-16 14:15:39 · 773 阅读 · 0 评论 -
[SwiftUI]HStack部分区域和Spacer所占区域无法响应点击问题
所占据的区域,都能响应点击事件,你可以使用。它只是一个会占据可用空间的透明视图。,则剩余的空间可能不会响应点击。可能没有足够的可点击区域。如果其内部的子视图没有占满。默认不接收点击事件。原创 2024-01-16 14:09:44 · 809 阅读 · 0 评论 -
[SwiftUI]List背景颜色与页面的背景颜色不一致的处理方式
如下代码,页面中一个Text紧跟一个List。我们会发现,当页面背景设置为某些颜色时,List的背景颜色与页面背景色不一致,见示意图。虽然List的背景颜色我们无法自由修改,但我们可以另辟蹊径,直接创建一个List来作为背景。下面将上面的VStack包装到一个ZStack,在其前面新添加一个List作为背景。上面这种效果,让人太难接受。原创 2024-01-09 23:32:51 · 808 阅读 · 0 评论 -
[SwiftUI]工程最低适配iOS13
类是 UIKit 应用程序的传统启动方式,它专门用于 iOS 和 iPadOS 平台。这段代码不能直接用于跨平台运行,因为它仅适用于 iOS 和 iPadOS,并且使用了 UIKit 的特定类和方法,比如。info.plist中移除Application Scene Manifest。如果需要支持跨平台还是乖乖最低支持iOS14。然后,重新运行就没问题了。原创 2024-01-06 12:09:59 · 1823 阅读 · 0 评论 -
[Swift]将字符串拆分为N份
比如常见需求:将字符串等分100份 / 将字符串拆分为字符串数组打乱顺序后加密存储。原创 2023-05-18 09:28:26 · 506 阅读 · 0 评论 -
[SwiftUI]图片缩放
使用GeometryReader、ScrollView和Image实现图片缩放功能。捏动手势缩放(ScollView的弹动动画会影响到手势的流畅性)原创 2023-04-07 23:02:32 · 1043 阅读 · 3 评论 -
[SwiftUI]传值跳转新页面及返回上一页
使用环境包装器(Environment)返回上页。使用NavigationLink跳转。自定义导航上的返回按钮。原创 2023-04-05 19:25:01 · 1604 阅读 · 0 评论 -
[SwiftUI]Color加载十六进制颜色
简单拓展了一下Color,便于加载十六进制颜色和将Color转换为十六进制字符串。原创 2023-04-02 12:39:12 · 1333 阅读 · 0 评论 -
[SwiftUI]GroupBox的基本用法
【代码】[SwiftUI]GroupBox的基本用法。原创 2023-03-22 23:01:04 · 562 阅读 · 0 评论 -
[SwiftUI]HStack子视图布局
包括HStack常见的居中、拉满、等分和挤压。原创 2023-03-22 14:52:42 · 790 阅读 · 0 评论 -
[SwiftUI]Picker切换选项后回调
【代码】[Swift]Picker切换选项后回调。原创 2023-03-22 14:25:46 · 365 阅读 · 0 评论 -
[SwiftUI]Form的基本使用
【代码】[SwiftUI]Form的基本使用。原创 2023-03-22 14:20:59 · 552 阅读 · 0 评论 -
[SwiftUI]ScrollView下拉刷新与上拉加载
自己写有点费时间,要自定的话可以参考一下@心猿意码 老兄封装的。虽然刷新时机还有待优化,但确实很简洁,比较适合我的开发习惯。用现成的工具就很香了。原创 2023-03-18 23:47:46 · 4179 阅读 · 0 评论 -
[SwiftUI]使用ScrollView和LazyVStack自定义列表
【代码】[SwiftUI]使用ScrollView和LazyVStack自定义列表。原创 2023-03-18 12:31:29 · 672 阅读 · 0 评论 -
[SwiftUI]List的基本使用
【代码】[SwiftUI]List使用。原创 2023-03-08 23:12:17 · 521 阅读 · 0 评论 -
[SwiftUI]使用TabView自定义tabbar
【代码】[SwiftUI]使用TabView自定义tabbar。原创 2023-03-07 13:53:26 · 770 阅读 · 1 评论