StretchableImageWithLeftCapWidth растягивает неправильные части - PullRequest
0 голосов
/ 08 июня 2010

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

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

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

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

Ответы [ 2 ]

2 голосов
/ 13 августа 2010

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

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

0 голосов
/ 16 июня 2010

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

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

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

...