我试图让 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)
这是它显示的内容:
我知道 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 属性始终为零。
我有这样的设置来观察 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:...)。我究竟做错了什么?
我有两个包含同一对象的数组的 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)
非常感谢您的帮助。
我尝试实现 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)
内存图显示:
有任何想法吗?
我尝试在文本视图周围放置一个圆形框架,但我无法正确对齐它,也看不出问题出在哪里。如下图所示,文本有时会向左偏移,而应该居中。关于如何解决它的任何想法?
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) 中居中。
非常感谢您的帮助!:)