2010-06-07 3 views
0

Я пытаюсь использовать UIImage с stretchableImageWithLeftCapWidth, чтобы установить изображение в моем UIImageView, но встречаю странную ошибку масштабирования. В основном изображение моего изображения как овал шириной 31 пиксель. Левый и правый 15 пикселей - это кепки, а средний одиночный пиксель - это масштабированная часть.StretchableImageWithLeftCapWidth растягивание неправильных частей

Это прекрасно работает, если я установил левую крышку на 15. Однако, если бы я установил ее, скажем, 4. Я ожидал бы получить часть «центра», которая немного изогнута, поскольку она охватывает центр, в то время как концы немного защемлены.

То, что я получаю, является левой крышкой, казалось бы, правильной, а затем длинной средней частью, которая, как если бы я масштабировала одиночный пиксель в пикселе 5, затем часть справа от изображения, где она расширяется и закрывается по ширине примерно в два раза больше ширины исходного изображения. Полученное изображение похоже на термометр.

Кто-нибудь видел странное поведение, подобное этому, и может знать, что происходит?

ответ

2

Ваше замечание верно, Joey , StretchableImageWithLeftCapWidth НЕ расширяет весь центр изображения, как вы ожидали. Он только расширяет столбец пикселей справа от левой крышки, а пиксельную строку чуть ниже верхней крышки!

Вместо этого используйте свойство contentVretue UIView, и ваша проблема будет решена. Другим преимуществом этого является то, что contentStretch также может сжимать графику должным образом, тогда как stretchableImageWithLeftCapWidth работает только при увеличении графика.

0

Не уверен, что я получил вас правильно, но LeftCapWidth и т. Д. Сделаны для закругленных углов, причем все в прямоугольнике в радиусе закругления растягивается, чтобы соответствовать пространству между «шапками» на кнопке назначения или тому подобное.

Так что, если ваш овал выше или шире 4 x 2 = 8, все, что находится в среднем прямоугольнике, будет растянуто. И ваш, так что он по крайней мере будет выглядеть немного уродливым! Но если это даже не симметрично, что-то повлияло на растяжку. Возможно, что-то связано с происхождением или рамкой, или когда оно установлено, или, может быть, оно установлено дважды, или у вас есть два разных растянутых изображения друг над другом, что дает термометр.

Однажды я создал две идентичные кнопки в одном и том же месте, используя тот же сохраненный объект - конечно, отбросив предыдущую кнопку. Затем я задавался вопросом, почему черта кнопка не исчезла, когда я установил альфа на 0 ... Но это было так, что под ней была «мертвая» идентичная кнопка :)

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