我想像这样创建一堆圆形圆圈视图。
UIView stack
我想立即返回整个UIViews
堆栈。所以我试着这样做。
open func setupCirclestack(parentFrame:CGRect)->UIView
{
let arrayColor=[UIColor.yellow,UIColor.blue,UIColor.red]
let baseCircle=Circle.init(frame: parentFrame)
baseCircle.backgroundColor=UIColor.purple
var parentview=baseCircle
// var existingFrame=baseCircle.frame
for i in 0...2//<CircleValues().numberOfCircles-1
{
let circle=self.getInnerCircle(currentFrame: parentFrame)
circle.backgroundColor=arrayColor[i]
parentview.addSubview(circle)
parentview=circle as! Circle
//existingFrame=circle.frame
}
return parentview
}
func getInnerCircle(currentFrame:CGRect)->UIView
{
CircleValues.sharedInstance.radius=CircleValues.sharedInstance.radius-30
print("New Radius------\(CircleValues.sharedInstance.radius)")
let circle=Circle.init(frame: currentFrame)
return circle
}
但我只能获得最后一个(最内层视图)视图。如何从此方法返回整个UIViews
堆栈
答案 0 :(得分:1)
您在for循环结束时重新设置了一个parentView变量,因此它将替换您在其中添加圆圈作为子视图的parentView的现有对象。因此,它将返回存储在parentView中的最后一个圆对象。
for i in 0...2//<CircleValues().numberOfCircles-1
{
let circle=self.getInnerCircle(currentFrame: parentFrame)
circle.backgroundColor=arrayColor[i]
parentview.addSubview(circle)
//parentview=circle as! Circle
//existingFrame=circle.frame
}
答案 1 :(得分:1)
如果要在父视图中返回视图,则需要将函数更改为以下内容:
lapply(rf1$fit$control$index, length)
但是如果您需要返回视图数组,请尝试以下方法:
open func setupCirclestack(parentFrame:CGRect)->UIView
{
let arrayColor=[UIColor.yellow,UIColor.blue,UIColor.red]
let baseCircle=Circle.init(frame: parentFrame)
baseCircle.backgroundColor=UIColor.purple
var parentview=baseCircle
// var existingFrame=baseCircle.frame
for i in 0...2//<CircleValues().numberOfCircles-1
{
let circle=self.getInnerCircle(currentFrame: parentFrame)
circle.backgroundColor=arrayColor[i]
parentview.addSubview(circle)
}
return parentview
}
答案 2 :(得分:1)
这是因为您所有圈子的所有帧都与parentFrame
相同。
所以,您的所有观点都在添加,但您只能看到最后一个观看,因为它与其他观点重叠!
对于要添加的每个子视图,您必须为for循环的每次迭代减小帧大小!
for i in 0...2//<CircleValues().numberOfCircles-1
{
let circle=self.getInnerCircle(currentFrame: parentFrame) // decrease size(height and width) here every time to achieve result attached in screenshot in your question
circle.backgroundColor=arrayColor[i]
parentview.addSubview(circle)
parentview=circle as! Circle
//existingFrame=circle.frame
}