五角大楼与UISLiders作为圆周

时间:2013-07-05 08:56:29

标签: ios objective-c cocoa

我想在iOS中使用pentagon绘制一个UISliders作为circumradii(一组五个UISliders向不同的方向发展,并且来自五角大楼的中心)。目前,我使用共同UISlidersanchorPoint)轮换了五个:setAnchorPoint,但它们似乎并非源自一个共同点。 我怎么能这样做?我是否需要开始使用自定义控件?我可以使用Quartz2D还有哪些内容? 一些具体的指标会很有用(请不要只说“使用Quartz2D”)

以下是我取得的成就Imgur

这就是我想要实现的目标Imgur

2 个答案:

答案 0 :(得分:1)

我将各种滑块定义为IBOutletCollection,因此我可以将它们作为控制器中的数组进行访问。然后我在viewWillAppear:

中运行以下代码
CGPoint viewCenter = self.view.center;

for (NSInteger i = 0, count = self.sliders.count; i < count; ++i) {
    UISlider *slider = self.sliders[i];

    CGFloat angle = 2.0f * M_PI / count;

    CALayer *layer = slider.layer;
    layer.anchorPoint = CGPointMake(0.0f, 0.5f);
    layer.position = viewCenter;
    layer.transform = CATransform3DMakeRotation(i * angle - M_PI_2, 0.0f, 0.0f, 1.0f);
}

以下是结果的屏幕截图:

Circumradii sliders

这是你想要的吗?

答案 1 :(得分:0)

我会尝试转动滑块。以下代码应该有所帮助:

firstSlider.transform=CGAffineTransformRotate(firstSlider.transform,72.0/180*M_PI);
secondSlider.transform=CGAffineTransformRotate(secondSlider.transform,144.0/180*M_PI);
//and so on

72.0/180*M_PI是将度数转换为弧度。

希望它有所帮助。

P.S。附近没有Mac来检查它是否有效