如何在Swift中调用CGRectDivide?

piz*_*lms 5 ios swift

我试图调用CGRectDivide并且无法弄清楚Swift中的语法.语言指南似乎没有任何帮助.

这是模板:

CGRectDivide(rect: CGRect, slice: CMutablePointer<CGRect>, remainder: CMutablePointer<CGRect>, amount: CGFloat, edge: CGRectEdge)
Run Code Online (Sandbox Code Playgroud)

我的代码:

var r = UIScreen.mainScreen().bounds
var mySlice: CGRect
var myRemainder: CGRect
CGRectDivide(rect: CGRect, slice: mySlice<CGRect>, remainder: myRemainder<CGRect>, amount: 44.0, edge: CGRectEdge.MaxYEdge)
Run Code Online (Sandbox Code Playgroud)

这给了我一个错误:"不能专门化非泛型定义"

我很难过.Swift是一种非常易读的语言.

Wol*_*lly 18

如果在命令中按住Command键并单击CGRect符号,则将转到struct CGRect的Swift声明.在第一个扩展中,您将找到许多有用的方法,包括以下内容:

Swift 2:
func divide(atDistance: CGFloat, fromEdge: CGRectEdge) -> (slice: CGRect, remainder: CGRect)

Swift 3:
func divide(_ atDistance: CGFloat, fromEdge: CGRectEdge) -> (slice: CGRect, remainder: CGRect)
Run Code Online (Sandbox Code Playgroud)

您可以这样使用:

import UIKit

let rect = CGRect(x: 0, y: 0, width: 100, height: 100)
let (slice, remainder) = rect.divide(10.0, fromEdge: .MinXEdge) // Swift 3: .minXEdge
print("rect: \(rect)") // prints "rect: (0.0,0.0,100.0,100.0)"
print("slice: \(slice)") // prints "slice: (0.0,0.0,10.0,100.0)"
print("remainder: \(remainder)") // prints "remainder: (10.0,0.0,90.0,100.0)"
Run Code Online (Sandbox Code Playgroud)


pki*_*kis 6

只是示例,您可以尝试如何做到这一点:

let rect = CGRectMake(0, 0, 100, 100)
var sliceRect = CGRectZero
var remainderRect = CGRectZero
CGRectDivide (rect, &sliceRect, &remainderRect, 30.0, "CGRectEdge");

print(sliceRect)
print(remainderRect)
Run Code Online (Sandbox Code Playgroud)

“CGRectEdge”应替换为:

在此输入图像描述


Ada*_*dam 3

尝试这个:

CGRectDivide(r, &mySlice, &myRemainder, 44.0, CGRectEdge.MaxYEdge)
Run Code Online (Sandbox Code Playgroud)