2013-02-22 4 views
0

Мне нужно создать элемент управления с поведением, аналогичным UISegmentControl, который отображает список подслоев в супер слой. Число этих подслоев может меняться, и я должен рассчитать их позиции.Список позиций CALayer и float

Здесь проблема ... если я возьму суперслой с шириной, равной 31, и я хочу разместить в ней 4 подслоя, я должен создать 4 подслоя каждый шириной 31/4 = 7,75. Итак, первый слой имеет origin.x = 0, второй имеет origin.x = 7.75 третий 15.5 и последний 23.25.

Очевидно, что эти позиции недействительны, и они будут создавать размытые слои ... Я не могу найти способ округлить это значение, чтобы заполнить весь суперслой и сохранить целочисленные значения для width и origin.x, кто-то имеет решение?

ответ

2

Вы можете рассчитать все происхождение, используя точные значения, а затем округлить их до ближайшего интеграла. Затем вычислите все ширины, просто вычитая два смежных начала (или вычитая полную ширину вашего родителя из начала последнего подслоя). Это создаст слои, которые полностью покрывают ваш родитель, с интегральными координатами, но некоторые слои будут на 1 пиксель шире, чем другие.

Смежные вопросы