ios - SwiftUI 误导性错误:“Int”不可转换为“CGFloat”
问题描述
我一直在第 83 行 .offset(x: 150, y:7) 上得到“Int”不能转换为“CGFloat”。如果我将数字包装在 CGFloat() 中,则相同的错误只会出现在其他地方。我知道这与我程序中的控制流有关,但我无法确定在哪里。请帮忙。
这是我的 DateTracking.swift 屏幕代码(出现错误)。
struct DateTracking: View {
@State var recipes: [Recipe] = getRecipes()
@State var filterRecipesBy: String = ""
@State private var searchTerm: String = ""
@State var sortedNames: [Item] = getItemsSortedByNames()
@State var sortedDays: [Item] = getItemsSortedByDaysLeft()
@State var arraySelection: Int = 0
@State var sortBySelected: Bool = false
@State var recipesShown: Bool = false
@State var buttonShown: Bool = true
var body: some View {
NavigationView{
ZStack{
VStack{
SearchBar(text: $searchTerm)
if(self.arraySelection == 0){
QGrid(sortedDays.filter {
self.searchTerm.isEmpty ? true :
$0.imageName.localizedCaseInsensitiveContains(self.searchTerm)
}, columns: 3) { item in
Button(action: {
self.filterRecipesBy = item.imageName
recipesShown.toggle()
}){
ListItem(imageName: item.imageName, daysLeft: item.daysLeft, redBackground: item.redBackground )
}
}
//.background(Color(red: 239 / 255, green: 239 / 255, blue: 239 / 255))
}
if(self.arraySelection == 1){
QGrid(sortedNames.filter {
self.searchTerm.isEmpty ? true :
$0.imageName.localizedCaseInsensitiveContains(self.searchTerm)
}, columns: 3) { item in
ListItem(imageName: item.imageName, daysLeft: item.daysLeft, redBackground: item.redBackground )
}
//.background(Color(red: 239 / 255, green: 239 / 255, blue: 239 / 255))
}
}
if (self.sortBySelected == true){
VStack{
Button(action: {
self.sortBySelected.toggle()
}) {
Text("Done")
}
.offset(x: 150, y: 7)
Picker(selection: self.$arraySelection, label:
Text("Picker Name")){
Text("Expiry Date").tag(0)
Text("Names").tag(1)
}
.labelsHidden()
}
.frame(width:375)
.background(Color(red: 239 / 255, green: 239 / 255, blue: 239 / 255))
.offset(x: 0, y: 140)
}
if (self.recipesShown == true){
VStack(alignment: .center, spacing: 15) {
HStack {
Button(action: {self.recipesShown.toggle()
}){
Cross()
}
.offset(x: -70, y: 11)
Text(verbatim: "Recipes You Can Cook")
.font(.headline)
.fontWeight(.bold)
.padding(.top)
.offset(x: -50, y: 5)
}
RecipesVertical(recipes: self.recipes.filter($0.ingredients.contains(filterRecipesBy)))
.padding(.leading)
//.offset(x: 0, y: 140)
}
.frame(width:375, height:310, alignment: .center)
.background(Color.white)
}
/* if(buttonShown == true){
Button(action: {self.recipesShown = true
self.buttonShown = false
}){
Image("floatingrecipebutton")
.resizable()
.frame(width: 85, height: 85)
.shadow(radius: 10)
}
.offset(x: 125, y:200)
}
*/
}
.navigationBarTitle(Text("Date Tracking"))
.navigationBarItems(trailing:
HStack{
Button(action: {
self.sortBySelected.toggle()
}){
Text("Sort by")
}
}
)
}
}
}
解决方案
在 Swift 中,你不能在没有明确转换的情况下将 Int 分配给 CGFloat。
在这种情况下,1
您可以更改为1.0
. 那会奏效的。
推荐阅读
- oracle - SSDT 与 Oracle 的独立连接
- java - android.view.View.performClick(View.java:5610)
- javascript - 维护下拉菜单中的选定值
- javascript - LocalStrategy Passport 返回 null
- javascript - 异步 IIFE 模块 - 缓存结果并且在进一步需要时不返回承诺
- php - 在 Woocommerce 单品中将价格移至简短描述下方
- java-8 - Redhat Jboss Server (sweet 32) 生日攻击中的漏洞
- r - 方差分析的 R 数据帧操作
- anaconda - 转换文件;得到'charmap'编解码器编码错误:字符映射到
- angular - Reference a component's nested variable from a service, or vice versa