Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/105.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 Quartz 2D drawRect和调整大小_Ios_Drawrect_Cgcontext - Fatal编程技术网

IOS Quartz 2D drawRect和调整大小

IOS Quartz 2D drawRect和调整大小,ios,drawrect,cgcontext,Ios,Drawrect,Cgcontext,我正在使用一个名为Quarkee的应用程序将徽标从SVG转换为Quartz 2d代码,这非常有用。唯一的问题是我似乎不知道如何调整结果的大小。如果我设置UIView的框架,drawRect的结果在框架中保持巨大。我如何得到它是我正在设置的框架的大小 下面是out的一个示例 有人能帮忙吗 - (void)drawRect:(CGRect)rect { CGContextRef context = UIGraphicsGetCurrentContext(); CGColorSpaceRef col

我正在使用一个名为Quarkee的应用程序将徽标从SVG转换为Quartz 2d代码,这非常有用。唯一的问题是我似乎不知道如何调整结果的大小。如果我设置UIView的框架,drawRect的结果在框架中保持巨大。我如何得到它是我正在设置的框架的大小

下面是out的一个示例

有人能帮忙吗

- (void)drawRect:(CGRect)rect
{

CGContextRef context = UIGraphicsGetCurrentContext();
CGColorSpaceRef colorspace_1 = CGColorSpaceCreateDeviceRGB();
CGFloat components_1[] = {0.9961,0.9961,0.9961, 1.0000};
CGColorRef color_1 = CGColorCreate(colorspace_1, components_1);
CGContextSetFillColorWithColor(context,color_1);

CGContextMoveToPoint(context, 0.4960,0.1090);
CGContextAddLineToPoint(context,662.9260,0.1090);
CGContextAddLineToPoint(context,662.9260,227.8780);
CGContextAddLineToPoint(context,0.4960,227.8780);
CGContextAddLineToPoint(context,0.4960,0.1090);
CGContextClosePath(context);


CGContextFillPath(context);

看看这些值:

CGContextMoveToPoint(context, 0.4960,0.1090);
CGContextAddLineToPoint(context,662.9260,0.1090);
CGContextAddLineToPoint(context,662.9260,227.8780);
CGContextAddLineToPoint(context,0.4960,227.8780);
CGContextAddLineToPoint(context,0.4960,0.1090);

调用
drawRect
方法时,可以使用
self.bounds
获取视图的当前rect并根据它调整这些值。你说你已经从一个应用程序中生成了这个代码——这些应用程序在生成代码时通常会硬编码你绘制的图形的大小,因此,您必须了解这些值与您绘制的图像的实际大小之间的关系,并根据
自身边界使其动态化…
大小…

这里的解决方案是使用view.transform=CGAffineTransformMakeScale(0.5f,0.5f);要调整视图的大小

假设我使用自定义drawRect调用我的自定义视图(如上所述)UICustomView*myView=[[UICustomView alloc]initWithFrame:CGRectMake(200,70,80,30)];它的框架是正确的,但是在drawRect中绘制的结果对于框架来说太大了。如何使drawRect将上下文调整为给定rect的大小;CGContextScaleCTM(上下文,1.0,-1.0);例如,还要补充的是,生成的drawRect非常庞大,有许多路径,因此无法更改硬编码的坐标。谢谢graver。在这种情况下,drawRect在上下文中绘制了一个包含数百行代码的完整徽标,并且您的正确点是硬编码的,因此无法将它们重写到提供的rect的边界。