如何改变视图的尺度
我正在尝试使应用欧元运动的边栏菜单! 当菜单从左侧滑动时, sourceviewcontroller
向左滑动并变小。
var percentWidthOfContainer = containerView.frame.width * 0.2 // this is 20 percent of width var widthOfMenu = containerView.frame.width - percentWidthOfContainer bottomView.transform = self.offStage(widthOfMenu) bottomView.frame.origin.y = 60 bottomView.frame.size = CGSizeMake(widthOfMenu, 400) bottomView.updateConstraints() menucontroller.view.frame.size = CGSizeMake(widthOfMenu, containerView.frame.height) menucontroller.updateViewConstraints()
在这里,底部视图是sourceviewcontroller.view。 所以,问题是如何缩放底部视图。 在我的情况下,我可以改变大小,但视图内的一切仍然是相同的大小。
您可以使用CGAffineTransformScale
来缩放UIView
实例
例如
假设你有一个UIView
的实例
UIView *view;
//可以说你已经实例化和定制你的视图
.. ..
//将视图的原始变换保存在variables中
CGAffineTransform viewsOriginalTransform = view.transform;
//缩小视图使用CGAffineTransformScale
view.transform = CGAffineTransformScale(viewsOriginalTransform, 0.5, 0.5);
//再次放大视图
view.transform = CGAffineTransformScale(viewsOriginalTransform, 1.0, 1.0);
根据苹果公司的文件
CGAffineTransform数据结构表示用于仿射变换的matrix。 转换指定一个坐标系中的点如何映射到另一个坐标系中的点。 仿射变换是一种特殊types的映射,保留path中的平行线,但不一定保留长度或angular度。 缩放,旋转和平移是仿射变换所支持的最常用的操作,但是也可能出现偏斜。
所以你的解决scheme,以最小化bottomView的大小: –
bottomView.transform = CGAffineTransformMakeScale(0.2, 0.2) // you can change it as per your requirement
如果你想调整它的大小或最大化它的原始大小:
bottomView.transform = CGAffineTransformMakeScale(1.0, 1.0)
以防万一你想扩大底部视图超过其大小:
bottomView.transform = CGAffineTransformMakeScale(1.3, 1.3) // you can change it as per your requirement