CALayer和浮动位置列表

时间:2013-02-22 21:48:32

标签: objective-c macos calayer

我需要创建一个控件,其行为类似于UISegmentControl,它将子图层列表显示为超级图层。 这些子层的数量可以改变,我必须计算它们的位置。

这里有问题...如果我拿一个宽度等于31的超级层并且我想在其中放置4个子层,我应该创建4个子层,每个宽31/4 = 7.75。所以第一层有origin.x = 0,第二层有origin.x = 7.75第三层15.5和最后一层23.25。

显然这些位置是无效的,它们会产生模糊的图层......我找不到一种方法来绕过这个值,可以填充整个超层并保持宽度和原点的整数值。有人有一个办法?

1 个答案:

答案 0 :(得分:2)

您可以使用精确值计算所有原点,然后将它们四舍五入到最接近的积分。然后通过简单地减去两个相邻的原点(或从最终子层的原点中减去父项的总宽度)来计算所有宽度。这将生成完全覆盖父级的图层,具有整体坐标,但有些图层将比其他图层宽1个像素。