Как сохранить согласованную 2-пиксельную границу вокруг UIView при его масштабировании?

У меня есть пользовательский UIView, который можно масштабировать и поворачивать на основе значений UISlider. Масштабирование работает хорошо, это просто:

self.myView.transform = CGAffineTransformScale(CGAffineTransformIdentity, sx, sy);

Мой UIView имеет границу 2 пикселя:

self.layer.borderColor = [UIColor whiteColor].CGColor;
self.layer.borderWidth = 2.0f;

Однако, когда я масштабирую вид, граница также увеличивается в размерах. Как я могу сохранить непротиворечивую границу, которая игнорирует масштаб представления?

2 ответа

Решение

Когда вы меняете масштабирование вида...:

self.layer.borderWidth = 2.0f / scaleFactor;

Целью масштабирования и, следовательно, его ожидаемого поведения является масштабирование кадра в 2 пикселя вверх или вниз вместе с оставшимся изображением.

Вы можете иметь один вид с цветом вашей рамки и установить вид сверху, который будет на 4px/4px меньше и расположен на 2/2, который несет оставшийся вид только без рамки.

Затем измените кадр базового (frame) вида соответственно. Затем масштабируйте подпредставление соответственно. Убедитесь, что он остается в центре или все еще начинается с (2/2).

Другие вопросы по тегам