未找到CGRectMake符号

时间:2015-05-11 02:34:30

标签: macos core-graphics core-foundation jsctypes

我试图声明一些CoreGraphics函数,特别是CGRectMake并且它一直告诉我找不到符号。

文档说我需要导入CoreGraphics:https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGGeometry/index.html#//apple_ref/c/func/CGRectMake

我的CoreGraphics的路径是/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation;如何找到适合此功能的库?我是从ctypes做的。

顺便说一句,从阅读文档看来,它似乎只是设置一个CGRect并填充它的宽度,高度,x和y这是真的吗? (在这种情况下,我不需要费心去宣布它,它很简单)。

3 个答案:

答案 0 :(得分:1)

您要么缺少导入,要么在其他地方阻止编译器在上下文中查看此内容或输入错误。

在过去的几个OS X版本中,CGRect和NSRect是完全相同的。在构建也将为iOS编译的代码时,您只需要使用CGRect。

答案 1 :(得分:1)

如果您想要添加CoreGraphics Framework,那么:

1. Select Target
2. Build Phases
3. Link Binary With Libraries
4. +
5. CoreGraphics.framework
6. Add

enter image description here

答案 2 :(得分:1)

最后我无法导出函数,所以我必须使用的解决方案是自己定义函数,我猜它只是返回一个带填充字段的矩形并且工作正常:)

    CGRectMake: function() {
        /* https://developer.apple.com/library/ios/documentation/GraphicsImaging/Reference/CGGeometry/index.html#//apple_ref/c/func/CGRectMake
         *  CGRect CGRectMake (
         *    CGFloat x,
         *    CGFloat y,
         *    CGFloat width,
         *    CGFloat height
         * ); 
         */
         /******* does not work
        return lib('CoreGraphics').declare('CGRectMake', self.TYPE.ABI,
            self.TYPE.CGRect,   // return
            self.TYPE.CGFloat,  // x
            self.TYPE.CGFloat,  // y
            self.TYPE.CGFloat,  // width
            self.TYPE.CGFloat   // height
        );
        */
        return function(x, y, width, height) {
            return self.TYPE.CGRect(
                self.TYPE.CGPoint(x, y),
                self.TYPE.CGSize(width, height)
            );
        };
    }