Xcode 8.2.1でswift 2.3プロジェクトを持っています) 自動swift 3を2.3から変換するときにエラーが発生しました。 '' CGFloat '型の引数リストで初期化子を呼び出せません'((UIContentContainer、C ~~
。2.3からの迅速な3を変換するしかし、私は二つの問題を得た。
1.Cannot invoke initializer for type 'CGFloat' with an argument list of type '((UIContentContainer, CGSize) -> CGSize)'
2.Binary operator '+' cannot be applied to operands of type '(UIContentContainer, CGSize) -> CGSize' and 'CGFloat'
// GENERATE A GRID FOR BLOCKS -----------------------
for i in 1...gridSize {
for j in 1...gridSize {
let _j = CGFloat(j-1)
let _a = (view.frame.width - CGFloat(gridSize))
let _b = (CGFloat(size) + CGFloat(padding))
let _ab = (_a * _b)/2
let _c = _j * (size + padding)
let _abc = _ab + _c
//let _x = (view.frame.width - CGFloat(gridSize) * (CGFloat(size) + CGFloat(padding)))/2 + _j * (size + padding)
let _x = _abc
let _y = CGFloat(rectsHeight) + CGFloat(i-1) * (size + padding)
let r = Rectangle(type: "default", x: _x, y: _y, size: size, color: midGray, view: gameView!,real_x : _x, real_y : _y)
rectanglesArray.append(r)
}
}
これは、エラーメッセージの最終製品のコードである。 LETサイズとパディングがCGFloatある。
なぜできませんの計算する(CGFloat(size)+ CGFloat(padding))? Swift 2.3から作業していました。 スウィフト3では動作しません。
私をすべてサポートしてください。
ありがとうございました。
--04/2017分の22 11:54 Added-- お返事をありがとうございます。私は、詳細パディングを忘れ
申し訳ありません。
// Resize views accodingly to device screen size
if UIScreen.main.bounds.size.width == 320 {
//iPhone 4/5
var size: CGFloat = 25
blocksHeight = 380
afterTouchSizeOffset = 23
} else if UIScreen.main.bounds.size.width == 375 {
// iPhone 6
var size: CGFloat = 33
var padding: CGFloat = 3
blocksHeight = 520
afterTouchSizeOffset = 28
} else if UIScreen.main.bounds.size.width == 414 {
// iPhone 6+
var size: CGFloat = 36
var padding: CGFloat = 4
blocksHeight = 570
afterTouchSizeOffset = 33
} else if UIScreen.main.bounds.size.width == 768 {
// iPad
var size: CGFloat = 55
var padding: CGFloat = 6
blocksHeight = 830
afterTouchSizeOffset = 50
}
すべてのパディング定義を確認しました。
Config.swift
/*** DO NOT EDIT THE VARIABLES BELOW ***/
var soundURL: URL?
var soundID:SystemSoundID = 0
var padding:CGFloat = 2
var size:CGFloat = 28
let gridSize = 10
var gameView:UIView?
var score = 0
var bestScore = Int()
var lastScore = Int()
var playCount = Int()
var gameEnded = false
var bounds = CGRect()
変更コード。 しかし、新しいエラー...
がプロパティに割り当てる3.Cannot 'size' は-----
Config.swift
解決----方法// Resize views accodingly to device screen size
if UIScreen.main.bounds.size.width == 320 {
//iPhone 4/5
size = 25
blocksHeight = 380
afterTouchSizeOffset = 23
} else if UIScreen.main.bounds.size.width == 375 {
// iPhone 6
size = 33
padding = 3
blocksHeight = 520
afterTouchSizeOffset = 28
} else if UIScreen.main.bounds.size.width == 414 {
// iPhone 6+
size = 36
padding = 4
blocksHeight = 570
afterTouchSizeOffset = 33
} else if UIScreen.main.bounds.size.width == 768 {
// iPad
size = 55
padding = 6
blocksHeight = 830
afterTouchSizeOffset = 50
}
です
Befor
/*** DO NOT EDIT THE VARIABLES BELOW ***/
var soundURL: URL?
var soundID:SystemSoundID = 0
var padding:CGFloat = 2
var size:CGFloat = 28
0123の後
/*** DO NOT EDIT THE VARIABLES BELOW ***/
var soundURL: URL?
var soundID:SystemSoundID = 0
GameBoard.swift
// Dimension variables
var rectsHeight = 50
var blocksHeight = 435
var rectsForDissapear = Array<Dictionary<String,Any>>()
var gridTilesAmount = Array<Int>()
var blockEndCoords : CGPoint = CGPoint()
var afterTouchSizeOffset : CGFloat = 25
var selectedBlock : Block?
var startTouchCoords : CGPoint = CGPoint()
let DeviceTest:Bool = false
let SimulatorTest:Bool = true
var padding:CGFloat = 2
var size:CGFloat = 28
おかげで、すべてのサポーターの後
// Dimension variables
var rectsHeight = 50
var blocksHeight = 435
var rectsForDissapear = Array<Dictionary<String,Any>>()
var gridTilesAmount = Array<Int>()
var blockEndCoords : CGPoint = CGPoint()
var afterTouchSizeOffset : CGFloat = 25
var selectedBlock : Block?
var startTouchCoords : CGPoint = CGPoint()
let DeviceTest:Bool = false
let SimulatorTest:Bool = true
Befor。
ご返信ありがとうございます。 詳細を追加しました。 パディング用の番号を設定しました。 なぜコンパイラはクロージャと考えていますか? 私は混乱しています.... – Yuki
お返事ありがとうございます。 私たちはConfigs.swiftを持っています。 このファイルを定義します。 /***以下のバリエーションは編集しないでください***/ var soundURL:URL? のvar soundID:SystemSoundID = 0 のvarパディング:CGFloat = 2 VARサイズ:UIViewの:= 28 CGFloatは、グリッド寸法= 10 するvar gameViewを聞かせて? VARスコア= 0 VAR bestScore = INT() VAR lastScore = INT() するvarプレイカウント= INT() VAR gameEnded = falseを VAR境界= CGRect() – Yuki
ありがとう! '//もしUIScreen.main.bounds.size.widthの== 320は{ // iPhone 5/5 サイズ= 25 blocksHeight = 380 afterTouchSizeOffset = 23 }デバイスの画面サイズ にaccodinglyビューのサイズを変更します。 ..... – Yuki