缩放视图及其所有内容
Scaling a view and all its contents
我想知道是否有办法缩放 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 方法,这很繁琐。
当我不想缩放一些使用 UIWebView 显示的 html 文本时,我遇到了一些问题,这些内容不能那么容易地缩放...
我也尝试过另一种方法:当我的视图被缩放时,它不接受 userInteraction 所以我尝试拍摄快照,图像更容易缩放。
但它对我的 iphone 内存来说太重了,尤其是当我不想缩放的视图有数百个 uicollectionviewCells 时。
有没有更快的方法?
您可以对顶层视图应用缩放变换。
例如,这会将视图中的所有内容缩放 1.5 倍(大 50%):
view.transform = CGAffineTransformMakeScale(1.5, 1.5);
我想知道是否有办法缩放 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 方法,这很繁琐。
当我不想缩放一些使用 UIWebView 显示的 html 文本时,我遇到了一些问题,这些内容不能那么容易地缩放...
我也尝试过另一种方法:当我的视图被缩放时,它不接受 userInteraction 所以我尝试拍摄快照,图像更容易缩放。 但它对我的 iphone 内存来说太重了,尤其是当我不想缩放的视图有数百个 uicollectionviewCells 时。
有没有更快的方法?
您可以对顶层视图应用缩放变换。
例如,这会将视图中的所有内容缩放 1.5 倍(大 50%):
view.transform = CGAffineTransformMakeScale(1.5, 1.5);