首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用getRectsBeingDrawn:使用Swift

使用getRectsBeingDrawn:使用Swift
EN

Stack Overflow用户
提问于 2015-09-12 08:37:31
回答 2查看 554关注 0票数 0

我正试图在Swift应用程序中使用NSView call getRectsBeingDrawn(_:count:),但无法理解如何解压“返回”值--该方法的签名特别神秘。我正在通过count变量获得预期的矩形数,但我不知道如何访问数组中的矩形。This question解决了同样的问题,并提出了一个解决方案,但它对我不起作用-我无法访问NSRect结构。

代码语言:javascript
运行
复制
func decideWhatToRedraw() {

    let r1 = CGRect(x: 0, y: 0, width: 10, height: 20)
    let r2 = CGRect(x: 0, y: 100, width: 35, height: 15)

    setNeedsDisplayInRect(r1)
    setNeedsDisplayInRect(r2)
}

override func drawRect(dirtyRect: NSRect) {
    var rects: UnsafeMutablePointer<UnsafePointer<NSRect>> = UnsafeMutablePointer<UnsafePointer<NSRect>>.alloc(1)
    var count: Int = 0
    getRectsBeingDrawn(rects, count: &count)

    // count -> 2
    // But how to get the rects?
}
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-09-12 08:53:38

这就是你想要的:

代码语言:javascript
运行
复制
var rects = UnsafePointer<NSRect>()
var count = Int()
getRectsBeingDrawn(&rects, count: &count)

for i in 0 ..< count {

    let rect = rects[i]

    // do things with 'rect' here

}

您可以创建两个变量rectscount,并将引用传递给这两个变量,这样它们就会被信息填充。

调用getRectsBeingDrawn后,rects指向count矩形,您可以使用下标访问这些矩形,就像数组一样。

票数 1
EN

Stack Overflow用户

发布于 2018-06-03 05:29:53

swift 3.2

代码语言:javascript
运行
复制
            var rects: UnsafePointer<NSRect>?
            var count = Int()

            getRectsBeingDrawn(&rects, count: &count)
            for i in 0 ..< count {
                let rect = NSIntersectionRect(bounds, rects![i]);
                NSRectFillUsingOperation(rect, NSCompositeSourceOver)
            }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/32536855

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档