我有一个方法被覆盖的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
。
我正在考虑类似的事情:
- 推送上下文方法
- 绘制代码
- 流行语境
- 定位先前的上下文
这是一个理智的方法吗?还是 push 和 pop 上下文无法完成这样的巫术?
一种简单的方法:
为了回答“您尝试过什么”的问题,我尝试将我绘制的视图隔离bounds
为与绘图大小相等的大小,然后将该视图嵌入到另一个视图中......并且它可以工作。但是,这种方法很乏味,如果可能的话,我宁愿避免它。