IOS开发中遇到的问题总结【持续更新】

本文介绍了如何设置App的图标,包括使用AppIconGenerator工具生成图标并导入项目。同时,讲解了在SwiftUI中如何使用系统图标,通过symbolsexplorer查找图标名称,并在代码中直接引用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

知识点补给站

 1. 设置App的图标

 2. SwiftUI中的Image控件使用系统图标

3、修改app名称

​编辑

4、swift ui中软键盘弹出时将底部视图往上顶的问题

5、swift ui中软键盘的关闭问题 


知识点补给站


 1. 设置App的图标

 首先准备一张1024*1024像素的图标,然后打开网站:App Icon Generator

下载下来之后在压缩包里找到AppIcon.appiconset文件夹,替换项目当中的AppIcon即可

 2. SwiftUI中的Image控件使用系统图标

 要使用系统当中的图标首先是要知道图标的名字,想要找到图标中的名字,需要去App Store下载symbols explorer,如图:

 下载打开之后点开其中一个图标即可copy图标名称

接着直接在代码中使用即可:

Image(systemName: "square.and.arrow.up.fill")

3、修改app名称

如果没有找到这个选项,需要手动添加下,如图:

4、swift ui中软键盘弹出时将底部视图往上顶的问题

在你的布局中加入一下代码即可。

.ignoresSafeArea(.keyboard, edges: .bottom)

如果你是swift ui和UIKit混用,那么需要添加到自定义视图的位置,比如下面的HomeTabBarView是使用UIKit实现的:

 

5、swift ui中软键盘的关闭问题 

新建AnyGestureRecognizer.swift

class AnyGestureRecognizer: UIGestureRecognizer {

    // 当用户开始触摸屏幕时调用
    override func touchesBegan(_ touches: Set<UITouch>, with event: UIEvent) {
        // 如果触摸的视图是UIControl控件(比如按钮等)
        if let touchedView = touches.first?.view, touchedView is UIControl {
            // 取消这个手势,因为我们不希望打断控件的正常操作
            state = .cancelled

        // 如果触摸的视图是可编辑的UITextView(比如文本输入框)
        } else if let touchedView = touches.first?.view as? UITextView, touchedView.isEditable {
            // 同样取消这个手势,不想干扰文本输入
            state = .cancelled

        // 如果以上情况都不是,那就开始手势识别
        } else {
            state = .began
        }
    }

    // 当触摸结束时调用
    override func touchesEnded(_ touches: Set<UITouch>, with event: UIEvent?) {
        // 标记手势为结束状态
        state = .ended
    }

    // 当触摸被取消(比如来电或者中断)时调用
    override func touchesCancelled(_ touches: Set<UITouch>, with event: UIEvent) {
        // 取消这个手势
        state = .cancelled
    }
}

在SceneDelegate.swift 中添加以下代码

1、SceneDelegate实现UIGestureRecognizerDelegate

2、重写gestureRecognizer

func gestureRecognizer(_ gestureRecognizer: UIGestureRecognizer, shouldRecognizeSimultaneouslyWith otherGestureRecognizer: UIGestureRecognizer) -> Bool {
        // 返回 true 表示允许多个手势同时识别
        return true
    }

3、在scene方法中添加以下代码

// 创建一个自定义手势识别器,设置成:当用户在 window 上点击时,调用结束编辑的方法(相当于关闭键盘)
let tapGesture = AnyGestureRecognizer(target: window, action: #selector(UIView.endEditing))
// 设置手势识别器不需要独占触摸,也就是说,用户在触摸屏幕时,手势识别器不会阻止其他手势(可以同时触发多个手势)
tapGesture.requiresExclusiveTouchType = false
// 设置手势识别器不取消其他触摸事件,也就是说,手势被识别时,触摸还能继续传递给其他界面上的控件(不影响按钮点击等操作)
tapGesture.cancelsTouchesInView = false
// 把当前类设置为手势的代理,方便后面管理手势行为
tapGesture.delegate = self
// 把这个手势识别器添加到 window 上,也就是让它开始监听手势事件
window?.addGestureRecognizer(tapGesture)

 参考:https://stackoverflow.com/questions/56491386/how-to-hide-keyboard-when-using-swiftui

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

程序员大龙虾

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值