Pey*_*loW 11 iphone quartz-graphics uicolor ios
我可以UIColor通过检查CGColor它包装的实例来查询a 是否是模式,该CGColorGetPattern()函数返回模式(如果存在),或者null它是不是模式颜色.
CGPatternCreate()方法需要bounds在创建模式时,此值定义模式图块的大小(在Quartz用语中称为单元格).
我将如何从a UIColor或者CGPattern创建背景后检索此图案大小?
如果您的应用程序仅用于内部分发,则可以使用私有API.如果你看一下CoreGraphics框架中定义的函数,你会发现有很多函数,其中有一个叫做CGPatternGetBounds:
otool -tV /Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics | egrep "^_CGPattern"
Run Code Online (Sandbox Code Playgroud)
您只需要在框架上进行一些函数查找,并通过函数指针使用它.
标题包括:
#include <dlfcn.h>
Run Code Online (Sandbox Code Playgroud)
函数指针:
typedef CGRect (*CGPatternGetBounds)(CGPatternRef pattern);
Run Code Online (Sandbox Code Playgroud)
检索函数的代码:
void *handle = dlopen("/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics", RTLD_NOW);
CGPatternGetBounds getBounds = (CGPatternGetBounds) dlsym(handle, "CGPatternGetBounds");
Run Code Online (Sandbox Code Playgroud)
检索边界的代码:
UIColor *uicolor = [UIColor groupTableViewBackgroundColor]; // Select a pattern color
CGColorRef color = [uicolor CGColor];
CGPatternRef pattern = CGColorGetPattern(color);
CGRect bounds = getBounds (pattern); // This result is a CGRect(0, 0, 84, 1)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
832 次 |
| 最近记录: |