使用 swift 在 iOS 中以编程方式更改视图的高度和宽度会导致意外行为
Changing Height and Width of View programatically leads to unexpected behaviour in iOS using swift
我使用
使视图四舍五入
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
并且改变View渐变大小后,图层确实变圆了,但我的View却没有。
这是我创建的视图。其实我想根据设备改变它的大小。它应该在 iphone 5 上较小而在 iphone 6+ 上较大
这就是我得到的
我卡在这一点上了。
设置渐变后再次调用 dashboardView.layer.cornerRadius = dashboardView.frame.height/2
,因为您正在更改框架,所以它的高度应该不同,因此您的 dashboardView.frame.height/2
具有不同的值。
如果需要,尝试将 clipstobounds
设置为 true
for dashboardView
。
问题是自动布局约束。
我试图更改视图的大小,但 Autolayout 将其放回原处。所以我创建了我的高度和宽度约束的出口并相应地改变了它。
我使用
使视图四舍五入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
并且改变View渐变大小后,图层确实变圆了,但我的View却没有。
这是我创建的视图。其实我想根据设备改变它的大小。它应该在 iphone 5 上较小而在 iphone 6+ 上较大
这就是我得到的
设置渐变后再次调用 dashboardView.layer.cornerRadius = dashboardView.frame.height/2
,因为您正在更改框架,所以它的高度应该不同,因此您的 dashboardView.frame.height/2
具有不同的值。
如果需要,尝试将 clipstobounds
设置为 true
for dashboardView
。
问题是自动布局约束。
我试图更改视图的大小,但 Autolayout 将其放回原处。所以我创建了我的高度和宽度约束的出口并相应地改变了它。