Во-первых, вы должны решить проблему кода WET *.Вы говорите, что делаете это «для целей тестирования», но на самом деле это усложняет тестирование, поскольку вам нужно изменить оба фрагмента кода и / или указать, над какой версией вы работаете.В худшем случае вы изменяете оба фрагмента кода по-разному и должны объединить их вручную.
Я бы сказал, переместите код из пунктирной линии в подпредставление, добавьте свойства для чего-либо, что два фрагментакод должен работать по-другому и создавать два подпредставления (а не в drawRect:
- серьезно).
Что касается актуальной проблемы: ну, я не вижу большого изображения, я вижу крошечное изображение,и я могу только догадываться, что большая жирность верхней линии, чем у нижней, означает, что верхняя линия более толстая.
Кстати, rect
не обязательно является границей вашего изображения.Никогда не думайте, что это так, иначе вы получите интересный рисунок, если это не так.Предположим, что это некоторый раздел границ - возможно, но, возможно, нет, всего этого.Когда вы имеете в виду [self bounds]
, скажем [self bounds]
.
Скорее всего, проблема заключается в разнице между CGRectGetMidY([self bounds])
и CGRectGetMaxY([self bounds])
.Один включает дробь, которая разделяет пиксель, а другой кратен одному пикселю или близок к нему.(Не обязательно кратно 1 - на Retina Display, 1 pt = 2 пикселя, поэтому 1 pixel = 0,5 pt.) Попробуйте наложить оба числа и при желании добавить 0,5, и посмотрите, какой вам больше нравится.
Нет никакого способа заставить это работать идеально с шириной линии 0,6 пункта.Там просто нет целого числа пикселей, которое работает.Все, что вы можете сделать, это решить, что выглядит лучше всего, и сделать это.
* Написано в других местах, в противоположность DRY.