我一直在尝试更改进度视图的大小和旋转,以采用屏幕的大小。它的基本功能是在手机屏幕上有一个填充玻璃的效果。
我使用self.masteryProgress.transform = CGAffineTransformMakeRotation((CGFloat(-90) / CGFloat(180.0) * CGFloat(M_PI)))
对它进行了相当无害的旋转
我使用view.bounds
获得了包围屏幕的视图的大小,试图获得矩形和宽度x高度。所以我不会被困在那里。
我试过使用.frame
.drawRect
,但当我使用它们时,要么破坏了它们,要么什么也不做。
在interfaceBuilder中,高度属性似乎被锁定为常量值2。
在构建自定义动画之前,有什么解决方案吗?
我试着像其他一些帖子所说的那样在interfaceBuilder中设置进度条的高度,但我需要让进度视图充满整个屏幕,无论它在什么设备上运行,所以这个解决方案在我的情况下不起作用。
我最终使用了CGAffineTransformScale(masteryProgress.transform, view.bounds.height / 1334, (view.bounds.width / 2))
由于我垂直旋转progressView,所以我将进度视图设置为宽度1334 ( iPhone 6Plus的高度)和高度2。通过将屏幕高度除以这些值,它应该可以完美地调整到任何手机的大小。
发布于 2016-10-17 16:22:12
如果使用界面生成器添加UIProgressView,只需创建高度约束并更改为所需的值即可。就这样。
发布于 2016-02-28 03:56:11
这将会起作用:
masteryProgress.transform = CGAffineTransformMakeScale(1, 4)
发布于 2019-09-27 17:53:34
“Sauvik Dolui”答案的一些修改:
在UIBezierPath中,您应该设置cornerRadius: like (self.frame.height / 2)。这是比使用(4.0)更通用的解决方案。
override func layoutSubviews() {
super.layoutSubviews()
let maskLayerPath = UIBezierPath(roundedRect: bounds, cornerRadius: self.frame.height / 2)
let maskLayer = CAShapeLayer()
maskLayer.frame = self.bounds
maskLayer.path = maskLayerPath.cgPath
layer.mask = maskLayer
}
https://stackoverflow.com/questions/31259993
复制相似问题