Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/120.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/10.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在Swift中调用CGR?_Ios_Swift - Fatal编程技术网

Ios 如何在Swift中调用CGR?

Ios 如何在Swift中调用CGR?,ios,swift,Ios,Swift,我试图调用CGRectDivide,但无法理解Swift中的语法。语言指南似乎没有任何帮助 以下是模板: CGRectDivide(rect: CGRect, slice: CMutablePointer<CGRect>, remainder: CMutablePointer<CGRect>, amount: CGFloat, edge: CGRectEdge) CGRectDivide(rect:CGRect,slice:CMutablePointer,余数:CMut

我试图调用CGRectDivide,但无法理解Swift中的语法。语言指南似乎没有任何帮助

以下是模板:

CGRectDivide(rect: CGRect, slice: CMutablePointer<CGRect>, remainder: CMutablePointer<CGRect>, amount: CGFloat, edge: CGRectEdge)
CGRectDivide(rect:CGRect,slice:CMutablePointer,余数:CMutablePointer,amount:CGFloat,edge:CGRectEdge)
我的代码:

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)
var r=UIScreen.mainScreen().bounds
var mySlice:CGRect
var myrements:CGRect
CGRectDivide(rect:CGRect,slice:mySlice,余数:myrestinutes,amount:44.0,edge:CGRectEdge.MaxYEdge)
这给了我一个错误:“不能专门化非泛型定义”

我被难住了。Swift是一种可读性很强的语言,到此为止。

试试这个:

CGRectDivide(r, &mySlice, &myRemainder, 44.0, CGRectEdge.MaxYEdge)

如果您命令单击代码中的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)
您可以这样使用:

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)"

仅举一个例子,说明如何尝试:

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

print(sliceRect)
print(remainderRect)
“CGRectEdge”应替换为:


您应该在
CGRect
上使用新的Swift
divide
,而不是
CGRectDivide

let frames = view.bounds.divide(44.0, fromEdge: .MinYEdge)
let slice = frames.0
let remainder = frames.1

哇!这看起来太像C了,我简直不敢相信,但它确实起了作用。谢谢。在最新版本中,方法签名已更改为:public func divide(atDistance:CGFloat,fromEdge:CGRectEdge)->(slice:CGRect,resids:CGRect)@Lombas谢谢,我已经更新了Swift 2和3的答案。