2015-02-12 5 views
0

Мне интересно, есть ли способ масштабирования UIView и всех его подзонов.Масштабирование вида и всего его содержимого

Когда я говорю о масштабировании, я говорю не только о кадрах, я бы не масштабировал все, чтобы шрифты тоже.

На данный момент я делаю это вручную:

-(void)setScale:(float)scale 
{ 
    // Apply scale on all subviews 
    myLabel.font = [UIFont myFontWithSize:baseSize*scale]; 
    [myButton setScale:scale] 
    [myCustomView1 setScale:scale] 
    [myCustomView2 setScale:scale] 
} 
-(void)layoutSubviews 
{ 
    // Apply scale on layout 
    myIcon.frame = CGRectMake(posX, posY, baseW*scale, baseH*scale); 

    [...] 
} 

Но метод setScale должен быть определен во всех моих взглядов, это довольно утомительно.

И у меня есть некоторые проблемы, когда я wan't масштабировать некоторые HTML текст, отображаемый с UIWebView, это содержание не может быть так легко масштабируется ...

Я попробовал другой способ тоже: когда мое представление масштабируется, оно не принимает userInteraction, поэтому я попытался сделать снимки, изображения намного проще масштабировать. Но это было слишком тяжело для моей памяти iphone, особенно когда взгляды, которые я не масштабировал, являются сотнями uicollectionviewCells.

Есть ли более быстрый способ сделать это?

ответ

0

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

Например, это будет масштабировать все в представлении на коэффициент 1,5 (50% больше):

view.transform = CGAffineTransformMakeScale(1.5, 1.5);