小编baz*_*l87的帖子

SwiftUI 按钮图像显示为黑色

我试图让 SwiftUI 中的一个按钮在文本旁边显示一个图像。但是,图像显示为黑色,即使它在不在按钮中时显示。我需要对我的代码进行哪些编辑才能正确显示图像。

这是我目前的代码:

List{
    Button(action: {
        self.changeAppIcon("AlternateIcon5")
    }) {
        HStack {
            Image("AlternateIcon5")
                .resizable()
                .frame(width: 50, height: 50)
                .cornerRadius(10.0)
            Text("Navy Blue")
        }
    }


    HStack {
        Image("AlternateIcon5")
            .resizable()
            .frame(width: 50, height: 50)
            .cornerRadius(10.0)
        Text("Test")
    }
}
Run Code Online (Sandbox Code Playgroud)

这是它显示的内容:

在此处输入图片说明

xcode button ios swift swiftui

7
推荐指数
2
解决办法
1182
查看次数

在 Mac Catalyst 中访问 NSWindow

我知道 NSWindow 在 Mac Catalyst 中并未正式可用,但我已经看到了一些通过NSClassFromString和访问它的帖子和成功案例valueForKeyPath。然而,我从来没能让它发挥作用,因为它总是返回零。

guard let nsWindows = NSClassFromString("NSApplication")?.value(forKeyPath: "sharedApplication.windows") as? [AnyObject] else {
    return nil
}
Run Code Online (Sandbox Code Playgroud)

也曾在目标c中尝试过

NSArray *const nsWindows = [NSClassFromString(@"NSApplication") valueForKeyPath:@"sharedApplication.windows"];
Run Code Online (Sandbox Code Playgroud)

但每次都是相同的结果 - 零。

是否有一个技巧可以让它发挥作用,或者这种方式作为访问它的潜在方式已被关闭?成功获取NSApplication实例。但 windows 属性始终为零。

macos ios swift mac-catalyst

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

Swiftobserve(_:options:changeHandler:) newValue 总是 nil

我有这样的设置来观察 AVCaptureDevice deviceWhiteBalanceGains 的值变化:

@objc dynamic var videoDevice:AVCaptureDevice?
private var deviceWBGainsObservation: NSKeyValueObservation?
Run Code Online (Sandbox Code Playgroud)

然后在代码中,

deviceWBGainsObservation = videoDevice?.observe(\.deviceWhiteBalanceGains,
                     options: [.old, .new]) {[unowned self] (object, change) in

    NSLog("\(change)")
}
Run Code Online (Sandbox Code Playgroud)

问题是更改 oldValue 和 newValue 始终为零。如果我使用传统的键值观察方法就不会出现这种情况observeValue(forKeypath:...)。我究竟做错了什么?

key-value-observing avfoundation ios avcapturedevice swift

5
推荐指数
0
解决办法
555
查看次数

合并两个单一响应 RXSwift

我有两个包含同一对象的数组的 Single 值。我想合并它们并应用地图并将它们作为单个返回。是否可以?

所以我有这个:

func fetchTripList(type: TripType) -> Single<[Trip]> {
    let response: Single<APITripListResponse> = request(target: TripsAPI.fetchUpcomingTripList)
    return response.map { $0.toModel() }
}
Run Code Online (Sandbox Code Playgroud)

我需要这样的东西:

func fetchTripList(type: TripType) -> Single<[Trip]> {
    let responseUpcoming: Single<APITripListResponse> = request(target: TripsAPI.fetchUpcomingTripList)
    let responsePast: Single<APITripListResponse> = request(target: TripsAPI.fetchPastTripList)
    //'Declare a Singe variable <[Trip]> called X merge both responseUpcoming and responsePast, apply to them map { $0.toModel() } and return it'

    return X
}
Run Code Online (Sandbox Code Playgroud)

非常感谢您的帮助。

ios swift rx-swift

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

保留循环关闭

我尝试实现 Coordinator 模式的一些变体,但我在关闭时遇到了保留循环的问题。它看起来像这样:

func goTo() {
    let coord = SecondViewCoordinator(nav: navigationController)
    add(coord)
    coord.start()
    coord.deinitIfNeeded = { [weak self] in
        guard let self = self else { return }
        self.free(coord)
    }
}
Run Code Online (Sandbox Code Playgroud)

如您所见,我设置deinitIfNeeded然后,如果在SecondViewCoordinator调用中deinitIfNeeded?()控制器正确弹出,但SecondViewCoordinator即使childCoordinators数组为空,对is 的引用仍然存在。

我的 Coordinator 类看起来像这样:

func goTo() {
    let coord = SecondViewCoordinator(nav: navigationController)
    add(coord)
    coord.start()
    coord.deinitIfNeeded = { [weak self] in
        guard let self = self else { return }
        self.free(coord)
    }
}
Run Code Online (Sandbox Code Playgroud)

内存图显示:

在此处输入图片说明

有任何想法吗?

arrays reference retain ios swift

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

Swift UI:将文​​本居中放置在圆圈中

我尝试在文本视图周围放置一个圆形框架,但我无法正确对齐它,也看不出问题出在哪里。如下图所示,文本有时会向左偏移,而应该居中。关于如何解决它的任何想法?

在此处输入图片说明

struct ContentView: View {
    let result = getDate();
    var body: some View {
        VStack {
            ScrollView(.horizontal, showsIndicators: false) {
                HStack(alignment: .top, spacing: 5) {
                    ForEach(result, id: \.self) {
                        day in
                        Text(day.name!)
                            .frame(width: 35, height: 35, alignment: .center)
                            .padding()
                            .overlay(
                                Circle()
                                    .size(width: 35, height: 35)
                                    .offset(x: 17.5,y: 17.5)
                                    .scale(1.4)
                                    .stroke(Color.orange, lineWidth: 4)
                            )
                    }
                }
            }
        Spacer()
        }.background(Color.white)

    }
}
Run Code Online (Sandbox Code Playgroud)

圆圈偏移了框架大小的一半,所以它的原点应该在中心。文本也应该在 .frame(width: 35, height: 35, alignment: .center) 中居中。

非常感谢您的帮助!:)

user-interface geometry alignment textview swift

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