"Double" нельзя преобразовать в "CGFloat?"

Мой Xcode продолжает выдавать мне ошибку Double is not convertible to CGFloat. Дело в том, что ошибка продолжает двигаться всякий раз, когда я меняю код. Сначала это было в этой строке: Text("left") .frame(width: 100.0, height: 100.0, alignment: .center), где я установил высоту 100,0, теперь она внизу: TextField("example", text: "PLACEHOLDER") .frame(width: 300.0, height: 300.0, alignment: .center) на высоте.

На сайте разработчиков Apple в качестве примера для swiftUI написано: .frame(width: 200, height: 200, alignment: .topLeading) Я попытался удалить десятичные дроби и получил Int, не конвертируемый в CGFloat. В какой-то момент я попытался разместить CGFloat () вокруг каждого, и у меня возник вопрос: «CGFloat не конвертируется в CGFloat?» ошибка

Любая помощь приветствуется, спасибо

import Cocoa
import SwiftUI

HSplitView{
    VStack{
        Text("left")
            .frame(width: 100.0, height: 100.0, alignment: .center)
        Text("left bottom")
            .frame(width: 100.0, height: 100.0, alignment: .center)
        Text("leftbottombottom")
            .frame(width: 100.0, height: 100.0, alignment: .center)
    }
    TextField("example", text: "PLACEHOLDER")
        .frame(width: 300.0, height: 300.0, alignment: .center)
}

person Community    schedule 27.12.2019    source источник


Ответы (2)


Попробуйте преобразовать Double в CGFloat:

import Cocoa
import SwiftUI

HSplitView{
    VStack{
        Text("left")
            .frame(width: CGFloat(100.0), height: CGFloat(100.0), alignment: .center)
        Text("left bottom")
            .frame(width: CGFloat(100.0), height: CGFloat(100.0), alignment: .center)
        Text("leftbottombottom")
            .frame(width: CGFloat(100.0), height: CGFloat(100.0), alignment: .center)
    }
    TextField("example", text: "PLACEHOLDER")
        .frame(width: CGFloat(300.0), height: CGFloat(300.0), alignment: .center)
}

В зависимости от типа и языка вам, возможно, придется явно привести один тип к другому, вместо того, чтобы ожидать, что язык неявно принудит его к вам.

person Dylon    schedule 27.12.2019
comment
Это то, что я думаю, будет правильным ответом, но я почти уверен, что он сказал, что сделал это, и получил какую-то странную ошибку. Похоже, происходит что-то еще странное. - person Pierce; 27.12.2019
comment
Когда я скопировал и вставил предложенный код, я получил на этот раз: «Общий параметр« C0 »не может быть выведен» в начале VStack. - person ; 27.12.2019

SwiftUI иногда сообщает о неправильных ошибках, как здесь. Ваша проблема в том, что у вас есть ошибка типа в TextField("example", text: "PLACEHOLDER"). Второй аргумент должен быть привязкой, а не строкой. Это работает:

import Cocoa
import SwiftUI

struct MyView: View {
  @State var text = "PLACEHOLDER"

  var body: some View {
    HSplitView{
      VStack{
        Text("left")
          .frame(width: 100.0, height: 100.0, alignment: .center)
        Text("left bottom")
          .frame(width: 100.0, height: 100.0, alignment: .center)
        Text("leftbottombottom")
          .frame(width: 100.0, height: 100.0, alignment: .center)
      }
      TextField("example", text: $text)
        .frame(width: 300.0, height: 300.0, alignment: .center)
    }
  }
}
person Nibr    schedule 16.02.2020