Как сохранить согласованную 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).