UIView масштабируется до отпечатка большого пальца, а как насчет подпредставлений? - PullRequest
1 голос
/ 20 мая 2010

У меня есть UIImageView, который я создаю программно, верно? Работает как шарм, когда я initWithImage и устанавливаю параметры для масштабирования UIViewContentModeScaleToFill. Я могу масштабировать весь день и создавать много разных меньших версий UIImageView размером с отпечаток, ОДНАКО, когда я добавляю подпредставления к упомянутому UIImageView и затем пытаюсь масштабировать счастливого нового родителя, дочернее подпредставление не масштабируется! Я огляделся и обнаружил, что должен включить логическое значение setAutoresizingSubviews для parentView в true (что я и сделал), а затем вызвать:

ChildView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;

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

Мой вопрос заключается в том, как настроить мой код так, чтобы при масштабировании моего родительского представления на 1/4 или w / e для создания отпечатка представления дочерние дочерние представления, принадлежащие родительскому представлению, соответственно масштабировались и позволяли Отпечаток размером 1/4, чтобы он выглядел так же, как полноразмерный вид (чуть меньше).

1 Ответ

1 голос
/ 20 мая 2010

Чтобы масштабировать подпредставления, вам нужно установить аффинное преобразование вида, чтобы масштабировать содержимое, а не использовать режим содержимого.

Маска авторазмера не предназначена для масштабирования подпредставлений. Вместо этого, это модель «пружины и распорки» для того, как позиционировать и изменять размер рамки подпредставлений при изменении размера родительского представления. В основном это используется, когда представление автоматически поворачивается от пейзажа к портрету и наоборот.

То, что вы пытаетесь сделать, - это масштабировать содержимое представления. Поэтому вместо использования UIImageView, который оптимизирован для отображения изображений, я бы создал собственный подкласс UIView, а затем в инициализации установил преобразование представления с помощью следующего кода:

self.transform = CATransform3DMakeScale(zoom, zoom, 1.0f);

Затем вставьте подпредставления. Вы можете переустановить преобразование, и подпредставления останутся в тех же положениях относительно друг друга, но в другом масштабе.

...