小编Iva*_*lov的帖子

异步等待调用后更新 UI

我从 API 加载书籍,加载时显示活动指示器,在服务器响应后更新标签。

activityView.isHidden = false
        
let task = detach {
    do {
        let books = try await self.bookService.fetchBooks()
        DispatchQueue.main.async {
            self.show(books: books)
        }
    } catch {
        DispatchQueue.main.async {
            self.resultLabel.text = error.localizedDescription
        }
    }
    DispatchQueue.main.async {
       self.activityView.isHidden = true
    }
}

//...
Run Code Online (Sandbox Code Playgroud)

我的问题是更新主队列上的 UI 的更好方法是什么?DispatchQueue.main.async看起来很丑,我想有更好的方法来做同样的事情。

我必须使用它,因为所有 UI 更新都应该在主线程上,并且我会收到编译器错误,而没有DispatchQueue.main.async类似的内容

与全局参与者“MainActor”隔离的属性“文本”无法从非隔离上下文中发生突变

或者

与全局参与者“MainActor”隔离的属性“isHidden”无法从非隔离上下文中进行突变

PS使用Xcode 13.0b2

async-await swift xcode13

11
推荐指数
1
解决办法
4679
查看次数

快速灵活的测试

我在Swift中安装了Quick和Nimble框架进行测试。但是在测试类中,我的类的类型无法解析。在测试类的顶部,我进行导入:

import UIKit
import Nimble
import Quick
import MyProject
Run Code Online (Sandbox Code Playgroud)

我知道我的主要目标应该是目标依赖项,并且不应添加任何类文件(测试类除外)来编译测试目标的源。

为什么我的文件在测试目标中不可见?

testing bdd ios swift

3
推荐指数
1
解决办法
621
查看次数

iOS中的透明戒指

我的视图中有一个圆形头像.我这样做:

self.imageView.layer.cornerRadius = 75;
self.imageView.layer.masksToBounds = YES;
self.imageView.layer.borderWidth = 1;
self.imageView.layer.borderColor = [UIColor whiteColor].CGColor;
Run Code Online (Sandbox Code Playgroud)

但我希望在头像和白色边框之间有透明的2px戒指.我无法在背景上画出白色圆圈,因为化身可以移动并且环位置会丢失.我有想法使用

CGContextSetBlendMode(context, kCGBlendModeClear);
Run Code Online (Sandbox Code Playgroud)

在分配图层后,但我不知道它是如何完成的.感谢您的帮助.

core-graphics objective-c uikit uiimageview ios

1
推荐指数
1
解决办法
217
查看次数