2016-11-04 62 views
-2

有什麼辦法可以結合兩個CGRect? 我想將「y:65.0」添加到現有的CGRect中,似乎無法找到任何方法來完成它。 聽起來像一個簡單的任務給我,但似乎不可能在Xcode中做,因爲CGRect之間不允許使用「+ =」。結合兩個CGRect

編輯:試用offsetBy並使用下面的代碼添加它們。當添加的CGRect的我得到的錯誤信息:No '+' candidates produce the expected contextual result type 'CGRect'

var fromRect:CGRect = self.tableView.rectForRow(at: indexPath) 
    let addRect = CGRect(x: 0.0, y: 65.0, width: 0.0, height: 0.0) 

    //fromRect.offsetBy(dx: 0, dy: 65.0) 
    fromRect = fromRect + addRect 
+3

這是什麼意思「結合兩個CGRect」? – user3441734

+0

可能的重複http://stackoverflow.com/questions/30533937/can-you-combine-cgrects-with-each-other-in-swift?但我不確定它是否適用於Swift 3. – Moritz

回答

0

或者,也許你可以只實現運營商自己:

func +(left: CGRect, right: CGRect) -> CGRect { 
    let origin = CGPoint(x: left.origin.x + right.origin.x, y: left.origin.y + right.origin.y) 
    let size = CGSize(width: left.size.width + right.size.width, height: left.size.height + right.size.height) 
    return CGRect(origin: origin, size: size) 
} 

func +=(left: inout CGRect, right: CGRect) { 
    left = left + right 
} 

,但有一個簡單的解決這一問題,而無需使用運營商: 剛做這個:(我不確定這部分,因爲它似乎你想做更復雜的事情?)

rect.origin.y += 65 
+0

這個操作在2D平面中意味着什麼?我知道有'CGRectIntegral',但這不是真的。 –

+0

這是他的答案的第一個解決方案,他現在可以做rect + = CGRect(x:0,y:65.0,寬度:0,高度:0) – Stormsyders

+0

是的,這就是爲什麼我沒有downvote答案。我認爲這個問題很糟糕。 –

0

如果你一個如果您想添加一個偏移量到矩形的位置,就像在添加y:65的示例中那樣,您可以使用rect.offsetBy(dx: 0, dy: 64)

+0

由於某種原因,我不適用於我。 代碼我曾嘗試: VAR fromRect:的CGRect = self.tableView.rectForRow(在:indexPath) 讓addRect =的CGRect(X:0.0,Y:65.0,寬:0.0,高度:0.0) // fromRect .offsetBy(dx:0,dy:65.0) romRect = fromRect + addRect 當我試圖使用最後一行代碼時,我得到錯誤「No'+'candidate'生成擴展上下文結果類型'CGRect' – stackoverflowlivesmatter

+0

我不確定你最後一行的內容是什麼,如果你試圖用65y偏移rect,那麼讓newRect = fromRect.offsetBy(dx:0,dy:65.0)。 「+」運算符,可以使用offsetBy函數添加到矩形的X或Y位置。 – charmingToad