在UIView子类的子视图中绘制

时间:2013-10-23 11:45:12

标签: ios objective-c uiview core-graphics core-animation

我有更多的通用问题。我有一个子类UIView的自定义类。我重写'-drawRect'在我成功完成的一行中绘制点。现在我在我的类中声明了另一个我想要动画的UIView对象。它应该是一个白色圆圈轮廓,我想用动画移动,这就是为什么我希望它是UIView类型。但我怎么能在里面画画呢?如果我有其他3个类似案例怎么办?所以我的观点是,我希望将所有功能保留在组件的类中,并为一个或多个UIView子视图提供自定义绘图。我想我在概念层面上缺少一些东西。

在ActionScript 3中我会这样做:

var first:MovieClip = new MovieClip();   
first.graphics...
......
var nTh:MovieClip = new MovieClip();
nTh.graphics...

这就是我想要实现的目标(正如我所说,我已经在-drawRect内绘制了点,现在我想制作一个更大的圆圈,后面必须进行动画制作): example

1 个答案:

答案 0 :(得分:1)

经过几天的挣扎和没有笔记本电脑的几周后,我决定回来告诉你我是如何解决问题的。如果这有助于某人,我会很高兴。 它似乎是一个非常简单的解决方案,甚至没有为-drawRect打扰。我所做的是创建一个UIView实例并在-initWithFrame中设置其边界和位置:

//circleFrameSideSize will serve as the diameter of the circle
UIView *circle = [[UIView alloc] initWithFrame:CGRectMake(0, circleYPos, circleFrameSideSize, circleFrameSideSize)];
circle.layer.borderColor = [UIColor whiteColor].CGColor;
circle.layer.borderWidth = 1;
//here we do the trick for making the circle with using layer's corner radius
circle.layer.cornerRadius = circleFrameSideSize/2;
[self addSubview:circle];

就是这样。每当我需要像矩形或圆形这样的数字时,我会使用这种方法。

PS:我不明白为什么我会因为长期以来一直在努力争取的东西而给予一个很好的描述...