我一直在我拥有的一个项目上应用实时视图,该项目的大部分 UI 都是用贝塞尔曲线绘制的,到目前为止,在工作了这么长时间之后,最终看到应用程序在 Interface Builder 中变得活跃起来,除了黑屏之外什么也没有看到,这简直就是魔法所有的时间。
有一部分是我用指向起点的手画一条线。添加所有元素后,我将视图旋转到一个偏移量,并在另一个方向上以相同的量旋转手以使其指向笔直。运行应用程序时,这始终运行良好,因此此代码有效。
当我添加 IB_DESIGNABLE 时,我注意到手不见了,但我可以通过使用bundle 技巧来纠正它。手以正确的量旋转。但视图本身并非如此。
这是相关代码:
- (void)drawRect:(CGRect)rect
{
// ....lots of drawing code.....
float totalRotationRadians = M_PI * 2 * -.12;
self.transform = CGAffineTransformMakeRotation(totalRotationRadians);
self.hand.transform = CGAffineTransformMakeRotation(-totalRotationRadians);
}
这是它在 Interface Builder 中的样子:
这是我运行它时的样子:
有一些细微的差异,因为有些东西会根据它所在的视图的大小进行缩放,但这就是它应该如何工作的方式。只有缺乏旋转才是真正的关闭。