Hon*_*ang 6 objective-c uiswitch cgaffinetransform autolayout ios8
我正在使用自动布局,
我想制作一个较小的UISwitch,然后用view.transform = CGAffineTransformMakeScale(0.5, 0.5)它来实现它.
此开关上方还有另一个视图.此开关的前导应与此视图的前沿对齐,并且在视图和开关之间存在固定的垂直空间,如下图所示:
关于iOS7的观点
但是,iOS8上有不同的外观:
关于iOS8的观点
似乎约束不适用于此开关.
但是,我叫self.view.layoutSubviews()和
self.view.layoutIfNeeded()
它不起作用.
如何让这个开关始终贴在上面视图的右下角?
这里的开关没有按比例缩小

这里有两种可能的方法:要么子类 UISwitch 并尝试在子类中应用所有需要的修改,要么定义一个新的 UIView,其中包含修改后的 UISwitch 作为子视图。子类可能是最快的,但它更棘手且风险更大,因为 UISwitch 并不打算成为此类修改的子类。
假设您采用子类化路线,以下是您需要进行的修改:
显然,将缩放变换应用于self。
override alignmentRectForFrame:,因此它返回super.alignmentRectForFrame:加上您的缩放变换。
override intrinsicContentSize,因此它返回super.intrinsicContentSize加上您的缩放变换
基本上,1 号应该执行实际的视觉转换。但是 2 和 3 是通知自动布局新视图大小所必需的,因为默认情况下 AL 不知道变换。
| 归档时间: |
|
| 查看次数: |
1605 次 |
| 最近记录: |