首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在Swift中更改UIProgressView的高度

在Swift中更改UIProgressView的高度
EN

Stack Overflow用户
提问于 2015-07-07 12:53:30
回答 9查看 38.8K关注 0票数 39

我一直在尝试更改进度视图的大小和旋转,以采用屏幕的大小。它的基本功能是在手机屏幕上有一个填充玻璃的效果。

我使用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。通过将屏幕高度除以这些值,它应该可以完美地调整到任何手机的大小。

EN

回答 9

Stack Overflow用户

发布于 2016-10-17 16:22:12

如果使用界面生成器添加UIProgressView,只需创建高度约束并更改为所需的值即可。就这样。

票数 19
EN

Stack Overflow用户

发布于 2016-02-28 03:56:11

这将会起作用:

masteryProgress.transform = CGAffineTransformMakeScale(1, 4)
票数 7
EN

Stack Overflow用户

发布于 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
}
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31259993

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档