【问题标题】:Changing Height and Width of View programatically leads to unexpected behaviour in iOS using swift使用 swift 以编程方式更改视图的高度和宽度会导致 iOS 中出现意外行为
【发布时间】:2016-06-03 13:31:15
【问题描述】:

我正在通过使用来制作一个四舍五入的视图

dashboardView.layer.cornerRadius = dashboardView.frame.height/2

而且它正在工作。然后我用这个方法改变了我的视图的高度和宽度

dashboardView.frame = CGRect(x: screenSize.width/2,y: 300,width: 200,height: 200)

现在,当我尝试使用相同的方法使其变圆时,它不起作用。 我还用这种方法在视图上添加了一个渐变层

    let gradient: CAGradientLayer = CAGradientLayer()
    let endingColorOFGradient = UIColor(colorLiteralRed: 133/255, green: 210/255, blue: 230/255, alpha: 1.0).CGColor
    let startingColorOfGradient = UIColor(colorLiteralRed: 50/255, green: 189/255, blue: 170/255, alpha: 1.0).CGColor
    gradient.startPoint = CGPoint(x: 1.0, y: 0.5)
    gradient.endPoint = CGPoint(x: 0.0, y: 0.5)
    gradient.frame = CGRect(x: 0, y: 0, width: dashboardView.layer.frame.width, height: dashboardView.layer.frame.height)
    gradient.colors = [startingColorOfGradient , endingColorOFGradient]
    self.dashboardView.layer.insertSublayer(gradient, atIndex:0)
    // making gradient round
    gradient.cornerRadius = dashboardView.frame.height/2

在改变视图渐变的大小后,图层确实变圆了,但我的视图没有。

这是我创建的视图。其实我想根据设备改变它的大小。它在 iphone 5 上应该很小,在 iphone 6+ 上应该更大

这就是我得到的 我被困在这一点上。

【问题讨论】:

  • 你能告诉我们你有什么和你期望什么吗?您可能还想添加dashboardView.layer.masksToBounds = true
  • @BrandonShega我已经更新了问题

标签: ios swift uiview frame gradient


【解决方案1】:

在设置渐变后再次调用dashboardView.layer.cornerRadius = dashboardView.frame.height/2,因为你正在改变框架,所以它的高度应该不同,所以你的dashboardView.frame.height/2有不同的值。

如果需要,请尝试将 clipstobounds 设置为 truedashboardView

【讨论】:

    【解决方案2】:

    问题在于自动布局约束。

    我试图更改视图的大小,但 Autolayout 将其放回原处。所以我创建了我的高度和宽度约束的出口并相应地改变了它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-04-23
      • 2021-02-08
      • 1970-01-01
      • 2017-02-28
      • 2021-10-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多