我试图调用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)
只是示例,您可以尝试如何做到这一点:
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”应替换为:
尝试这个:
CGRectDivide(r, &mySlice, &myRemainder, 44.0, CGRectEdge.MaxYEdge)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2283 次 |
| 最近记录: |