我有一个UIView
子类,其中drawRect:
方法覆盖。在那里,我有很长的生成的代码来绘制一些东西。
生成的代码存在使路径/行的所有顶点/坐标硬编码的问题。因此,要绘制一个100x100的正方形,它将从0,0开始并转到0,100 - > 100,100 - > 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:
方法也基于bounds
对齐绘图。
我想的是:
这是一种理智的方法吗?或推动和弹出环境无法完成这样的巫术?
一个简单的方法:
为了回答“你有什么尝试”的问题,我尝试将我绘制的视图与bounds
大小等于绘图大小隔离,然后将该视图嵌入到另一个视图中...它的工作原理。但是,这种方法很乏味,如果可能的话,我宁愿避免使用它。
答案 0 :(得分:0)
CGContextTranslateCTM(context, xOffset, yOffset);
是的,我在某种程度上忽略了这样一个事实:由于存在比例函数,因此应该存在一个很棒的函数来翻译CGContextRef
。
其余的都是简单的数学运算来实现垂直和放大水平对齐。