swift:无法将类型UIView的值赋给CGRect类型

时间:2016-06-22 22:55:07

标签: ios swift uiview xcode7

for循环中,我尝试将arrayOfImages中的图像放入我使用CGRect创建的矩形中。

但之后我想使用继承MyClassView的类UIView,因为我还有其他功能,我想应用于我刚创建的矩形图像,但我得到了错误

cannot assign value of type UIView to type CGRect
let widthRect = 50

func createMyRects(){

    let insetSize = CGRectInset(self.view.bounds, CGFloat(Int(widthRect)), CGFloat(Int(widthRect))).size

    for i in 0...arrayOfImages.count-1{

        let pointX = CGFloat(UInt(arc4random() % UInt32(UInt(insetSize.width))))
        let pointY = CGFloat(UInt(arc4random() % UInt32(UInt(insetSize.height))))
        let showImages = UIImageView(image: arrayOfImages[i])
        let newFrame = CGRect(x: pointX, y: pointY, width: CGFloat(widthRect), height: CGFloat(widthRect))
        //showImages.frame = newFrame

        let newFrame2 = MyClassView(frame: newFrame)

        showImages.frame = newFrame2  //here it says: cannot assign value of type UIView view to type CGRect 
        view.addSubview(showImages)

    }
}

3 个答案:

答案 0 :(得分:1)

要修复错误,您需要将UIView子类的框架分配给框架。

showImages.frame = newFrame2.frame

您的变量名称有点误导。

答案 1 :(得分:0)

Justin给出了一个可以让你的代码编译的答案,但它仍然没有意义。我假设MyClassView(frame: newFrame)位是MyClassView对象的初始化器?为什么在世界上你会创建一个新的视图对象只是为了获取它的框架并将其分配给另一个视图,然后丢弃新创建的视图?

为什么需要创建一个MyClassView对象?我的猜测是你没有,你不应该。摆脱完全创建MyClassView对象的行,并使用您已注释掉的代码? (showImages.frame = newFrame)。

答案 2 :(得分:0)

最后我已经解决了。如果其他人遇到同样的问题,只想发布答案。以前我试图将我用一张具有切片原始图片功能的图片制作的图像分配给我创建的一堆矩形。但它不起作用,因为我没有正确地使我的类MojView。它继承了UIView,现在它继承了UIImageView。此外,我在一行代码中进行了更改,结果是 - 矩形分配了图像,所有这些都可以拖动,这是我创建MojClass时的意图。这是MojClass和应用程序其余部分的代码。 MojClass:https://github.com/Vukovi/Ne-to/blob/master/README.md&&休息:https://github.com/Vukovi/ostatak/blob/master/README.md