Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.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
Cocoa touch CoreGraphics:在视图中心绘制矩形_Cocoa Touch_Core Graphics_Drawrect_Cgcontext - Fatal编程技术网

Cocoa touch CoreGraphics:在视图中心绘制矩形

Cocoa touch CoreGraphics:在视图中心绘制矩形,cocoa-touch,core-graphics,drawrect,cgcontext,Cocoa Touch,Core Graphics,Drawrect,Cgcontext,我有一个UIView子类,它覆盖了drawRect:方法。在那里,我有一长行生成的代码来绘制一些东西 生成的代码存在一个问题,即硬编码路径/线的所有顶点/坐标。因此,要绘制一个100x100的正方形,它将从0,0开始,然后转到0100->100100->100,0。要基于UIViewbounds属性进行此形状缩放,请执行以下操作: // This is the size of the drawing. I always know this value beforehand. CGSize con

我有一个
UIView
子类,它覆盖了
drawRect:
方法。在那里,我有一长行生成的代码来绘制一些东西

生成的代码存在一个问题,即硬编码路径/线的所有顶点/坐标。因此,要绘制一个100x100的正方形,它将从0,0开始,然后转到0100->100100->100,0。要基于
UIView
bounds
属性进行此形状缩放,请执行以下操作:

// This is the size of the drawing. I always know this value beforehand.
CGSize contentSize = SHAPE_XMARK_SIZE;
CGFloat scaleX = self.bounds.size.width / contentSize.width;
CGFloat scaleY = self.bounds.size.height / contentSize.height;

CGContextScaleCTM(context, MIN(scaleX, scaleY), MIN(scaleX, scaleY));
就规模而言,一切都很好。现在,我希望图纸的位置也与边界相关。我想让
drawRect:
方法也基于
边界对齐图形

我在想这样的事情:

  • 推上下文方法
  • 绘图代码
  • 流行语境
  • 定位前一上下文
  • 这是明智的做法吗?还是推送和流行的环境无法完成这样的魔法


    一种简单的方法:


    为了回答“您尝试了什么”的问题,我尝试使我绘制的视图与
    边界
    大小相等的视图隔离,然后将该视图嵌入到另一个视图中。。。它是有效的。然而,这种方法很乏味,如果可能的话,我宁愿避免它。

    Pfft,答案非常简单。我猜我是1,所以是0

    CGContextTranslateCTM(context, xOffset, yOffset);
    
    是的,我不知何故忽略了一个事实,即应该存在一个很棒的函数来翻译
    CGContextRef
    ,因为存在scale函数

    其余的都是实现垂直和水平对齐的简单数学