Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/111.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在swift 3.0中归档uiview所有属性 enum TetrisItemEnum{ 案例S 案例Z 案例一 案例J 案例一 案例O 案例T 变量rowcol:[(行:Int,列:Int)]{ 切换自身{ 案例S:返回[(1,0)、(2,0)、(0,1)、(1,1)] 案例Z:返回[(0,0)、(1,0)、(1,1)、(2,1)] 案例1:返回[(0,0)、(0,1)、(0,2)、(1,2)] 案例J:返回[(1,0)、(1,1)、(1,2)、(0,2)] 案例一:返回[(0,0)、(0,1)、(0,2)、(0,3)] 案例O:返回[(0,0)、(0,1)、(1,0)、(1,1)] 案例T:返回[(0,0)、(1,0)、(2,0)、(1,1)] 违约: 返回[] } } 变量背景大小:(行:Int,列:Int){ 切换自身{ 案例S:返回(3,2) 案例Z:返回(3,2) 案例1:返回(2,3) 案例J:返回(2,3) 案例一:返回(1,4) 案例O:返回(2,2) 案例T:返回(3,2) 违约: 返回(0,0) } } 变量颜色:UIColor{ 切换自身{ case.S:返回UIColor.init(hexString:#FD9E20FF”)! case.Z:返回UIColor.init(hexString:#FECE30FF”)! case.L:返回UIColor.init(hexString:#56C2F0FF”)! case.J:返回UIColor.init(hexString:#28C35BFF”)! case.I:返回UIColor.init(hexString:#FA6464FF”)! case.O:返回UIColor.init(hexString:#22BFADFF”)! case.T:返回UIColor.init(hexString:#FC80C3FF”)! 违约: 返回,白色 } } 静态let allValues=[S,Z,L,J,I,O,T] } 类TetrisItemView:UIView{ 变量形状:TetrisItemEnum! 静态函数makeTetrisItem(形状:TetrisItemEnum)->TetrisItemView{ 让rspace:CGFloat=Global.rspace 让cspace:CGFloat=Global.cspace let width:CGFloat=Global.width let height:CGFloat=Global.height 设bgrect=CGRect.init(x:0,y:0,width:width*CGFloat(shape.backgroundSize.row),height:height*CGFloat(shape.backgroundSize.col)) 让bgview=TetrisItemView.init(帧:bgrect) bgview.shape=形状 对于shape.rowcol中的(i,j){ 设rect=CGRect.init(x:width*CGFloat(i)+rspace*(CGFloat(i)-1),y:height*CGFloat(j)+cspace*(CGFloat(j)-1),width:width,height:height); let view=UIView.init(帧:rect) view.backgroundColor=shape.color bgview.addSubview(视图) } 返回bgview } func clone()->TetrisItemView{ 让view=NSKeyedUnarchiver.unarchiveObject(带:NSKeyedArchiver.archivedData(带rootobject:self))!as!TetrisItemView 返回视图 } 覆盖func hitTest(uPoint:CGPoint,带有事件:UIEvent?->UIView{ 用于在self.subview中查看{ 如果point.x>view.frame.minX&&point.xview.frame.minY&&point.y_Ios_Swift - Fatal编程技术网

Ios 如何在swift 3.0中归档uiview所有属性 enum TetrisItemEnum{ 案例S 案例Z 案例一 案例J 案例一 案例O 案例T 变量rowcol:[(行:Int,列:Int)]{ 切换自身{ 案例S:返回[(1,0)、(2,0)、(0,1)、(1,1)] 案例Z:返回[(0,0)、(1,0)、(1,1)、(2,1)] 案例1:返回[(0,0)、(0,1)、(0,2)、(1,2)] 案例J:返回[(1,0)、(1,1)、(1,2)、(0,2)] 案例一:返回[(0,0)、(0,1)、(0,2)、(0,3)] 案例O:返回[(0,0)、(0,1)、(1,0)、(1,1)] 案例T:返回[(0,0)、(1,0)、(2,0)、(1,1)] 违约: 返回[] } } 变量背景大小:(行:Int,列:Int){ 切换自身{ 案例S:返回(3,2) 案例Z:返回(3,2) 案例1:返回(2,3) 案例J:返回(2,3) 案例一:返回(1,4) 案例O:返回(2,2) 案例T:返回(3,2) 违约: 返回(0,0) } } 变量颜色:UIColor{ 切换自身{ case.S:返回UIColor.init(hexString:#FD9E20FF”)! case.Z:返回UIColor.init(hexString:#FECE30FF”)! case.L:返回UIColor.init(hexString:#56C2F0FF”)! case.J:返回UIColor.init(hexString:#28C35BFF”)! case.I:返回UIColor.init(hexString:#FA6464FF”)! case.O:返回UIColor.init(hexString:#22BFADFF”)! case.T:返回UIColor.init(hexString:#FC80C3FF”)! 违约: 返回,白色 } } 静态let allValues=[S,Z,L,J,I,O,T] } 类TetrisItemView:UIView{ 变量形状:TetrisItemEnum! 静态函数makeTetrisItem(形状:TetrisItemEnum)->TetrisItemView{ 让rspace:CGFloat=Global.rspace 让cspace:CGFloat=Global.cspace let width:CGFloat=Global.width let height:CGFloat=Global.height 设bgrect=CGRect.init(x:0,y:0,width:width*CGFloat(shape.backgroundSize.row),height:height*CGFloat(shape.backgroundSize.col)) 让bgview=TetrisItemView.init(帧:bgrect) bgview.shape=形状 对于shape.rowcol中的(i,j){ 设rect=CGRect.init(x:width*CGFloat(i)+rspace*(CGFloat(i)-1),y:height*CGFloat(j)+cspace*(CGFloat(j)-1),width:width,height:height); let view=UIView.init(帧:rect) view.backgroundColor=shape.color bgview.addSubview(视图) } 返回bgview } func clone()->TetrisItemView{ 让view=NSKeyedUnarchiver.unarchiveObject(带:NSKeyedArchiver.archivedData(带rootobject:self))!as!TetrisItemView 返回视图 } 覆盖func hitTest(uPoint:CGPoint,带有事件:UIEvent?->UIView{ 用于在self.subview中查看{ 如果point.x>view.frame.minX&&point.xview.frame.minY&&point.y

Ios 如何在swift 3.0中归档uiview所有属性 enum TetrisItemEnum{ 案例S 案例Z 案例一 案例J 案例一 案例O 案例T 变量rowcol:[(行:Int,列:Int)]{ 切换自身{ 案例S:返回[(1,0)、(2,0)、(0,1)、(1,1)] 案例Z:返回[(0,0)、(1,0)、(1,1)、(2,1)] 案例1:返回[(0,0)、(0,1)、(0,2)、(1,2)] 案例J:返回[(1,0)、(1,1)、(1,2)、(0,2)] 案例一:返回[(0,0)、(0,1)、(0,2)、(0,3)] 案例O:返回[(0,0)、(0,1)、(1,0)、(1,1)] 案例T:返回[(0,0)、(1,0)、(2,0)、(1,1)] 违约: 返回[] } } 变量背景大小:(行:Int,列:Int){ 切换自身{ 案例S:返回(3,2) 案例Z:返回(3,2) 案例1:返回(2,3) 案例J:返回(2,3) 案例一:返回(1,4) 案例O:返回(2,2) 案例T:返回(3,2) 违约: 返回(0,0) } } 变量颜色:UIColor{ 切换自身{ case.S:返回UIColor.init(hexString:#FD9E20FF”)! case.Z:返回UIColor.init(hexString:#FECE30FF”)! case.L:返回UIColor.init(hexString:#56C2F0FF”)! case.J:返回UIColor.init(hexString:#28C35BFF”)! case.I:返回UIColor.init(hexString:#FA6464FF”)! case.O:返回UIColor.init(hexString:#22BFADFF”)! case.T:返回UIColor.init(hexString:#FC80C3FF”)! 违约: 返回,白色 } } 静态let allValues=[S,Z,L,J,I,O,T] } 类TetrisItemView:UIView{ 变量形状:TetrisItemEnum! 静态函数makeTetrisItem(形状:TetrisItemEnum)->TetrisItemView{ 让rspace:CGFloat=Global.rspace 让cspace:CGFloat=Global.cspace let width:CGFloat=Global.width let height:CGFloat=Global.height 设bgrect=CGRect.init(x:0,y:0,width:width*CGFloat(shape.backgroundSize.row),height:height*CGFloat(shape.backgroundSize.col)) 让bgview=TetrisItemView.init(帧:bgrect) bgview.shape=形状 对于shape.rowcol中的(i,j){ 设rect=CGRect.init(x:width*CGFloat(i)+rspace*(CGFloat(i)-1),y:height*CGFloat(j)+cspace*(CGFloat(j)-1),width:width,height:height); let view=UIView.init(帧:rect) view.backgroundColor=shape.color bgview.addSubview(视图) } 返回bgview } func clone()->TetrisItemView{ 让view=NSKeyedUnarchiver.unarchiveObject(带:NSKeyedArchiver.archivedData(带rootobject:self))!as!TetrisItemView 返回视图 } 覆盖func hitTest(uPoint:CGPoint,带有事件:UIEvent?->UIView{ 用于在self.subview中查看{ 如果point.x>view.frame.minX&&point.xview.frame.minY&&point.y,ios,swift,Ios,Swift,当我克隆uiview时,它被正确地复制了。 但shape属性为零。 如何克隆所有属性以正确保存形状。它在swift3.1中 我的代码有什么问题 云你能告诉我怎么做吗?谢谢。在行中,让S=TetrisItemView.MakeTrisItem(shape:shape)我不知道在何处以及如何创建shape,能否在将其添加到MakeTrisItem之前打印它?代码位于TetrisItemView calss静态函数MakeTrisItem。您应该滚动它以查看。在第行中,让S=TetrisItemVie

当我克隆uiview时,它被正确地复制了。 但shape属性为零。 如何克隆所有属性以正确保存形状。它在swift3.1中

我的代码有什么问题


云你能告诉我怎么做吗?谢谢。

行中,让S=TetrisItemView.MakeTrisItem(shape:shape)
我不知道在何处以及如何创建
shape
,能否在将其添加到
MakeTrisItem
之前打印它?代码位于TetrisItemView calss静态函数MakeTrisItem。您应该滚动它以查看。在第行
中,让S=TetrisItemView.MakeTrisItem(shape:shape)
我看不出您在何处以及如何创建
shape
,您可以在将其添加到
MakeTrisItem
之前打印它吗?代码位于TetrisItemView calss静态函数MakeTrisItem。您应该滚动它来查看。
enum TetrisItemEnum {

    case S
    case Z
    case L
    case J
    case I
    case O
    case T

    var rowcol:[(row:Int,col:Int)] {
        switch self {
        case .S: return [(1,0),(2,0),(0,1),(1,1)]
        case .Z: return [(0,0),(1,0),(1,1),(2,1)]
        case .L: return [(0,0),(0,1),(0,2),(1,2)]
        case .J: return [(1,0),(1,1),(1,2),(0,2)]
        case .I: return [(0,0),(0,1),(0,2),(0,3)]
        case .O: return [(0,0),(0,1),(1,0),(1,1)]
        case .T: return [(0,0),(1,0),(2,0),(1,1)]
        default:
            return []
        }

    }
    var backgroundSize:(row:Int, col:Int) {
        switch self {
        case .S: return (3,2)
        case .Z: return (3,2)
        case .L: return (2,3)
        case .J: return (2,3)
        case .I: return (1,4)
        case .O: return (2,2)
        case .T: return (3,2)
        default:
            return (0,0)
        }
    }
    var color:UIColor {
        switch self {
        case .S: return UIColor.init(hexString: "#FD9E20FF")!
        case .Z: return UIColor.init(hexString: "#FECE30FF")!
        case .L: return UIColor.init(hexString: "#56C2F0FF")!
        case .J: return UIColor.init(hexString: "#28C35BFF")!
        case .I: return UIColor.init(hexString: "#FA6464FF")!
        case .O: return UIColor.init(hexString: "#22BFADFF")!
        case .T: return UIColor.init(hexString: "#FC80C3FF")!
        default:
            return .white
        }
    }

    static let allValues = [S, Z, L, J, I, O, T]
}

class TetrisItemView:UIView {

    var shape:TetrisItemEnum!

    static func makeTetrisItem(shape:TetrisItemEnum) -> TetrisItemView {
        let rspace:CGFloat = Global.rspace
        let cspace:CGFloat = Global.cspace
        let width:CGFloat = Global.width
        let height:CGFloat = Global.height

        let bgrect = CGRect.init(x: 0, y: 0, width: width*CGFloat(shape.backgroundSize.row), height: height*CGFloat(shape.backgroundSize.col))
        let bgview = TetrisItemView.init(frame: bgrect)
        bgview.shape = shape
        for (i,j) in shape.rowcol  {
            let rect = CGRect.init(x: width*CGFloat(i)+rspace*(CGFloat(i)-1), y: height*CGFloat(j)+cspace*(CGFloat(j)-1), width: width, height: height);
            let view = UIView.init(frame: rect)
            view.backgroundColor = shape.color
            bgview.addSubview(view)
        }

        return bgview
    }

    func clone() -> TetrisItemView {
        let view = NSKeyedUnarchiver.unarchiveObject(with: NSKeyedArchiver.archivedData(withRootObject: self))! as! TetrisItemView

        return view
    }

    override func hitTest(_ point: CGPoint, with event: UIEvent?) -> UIView? {
        for view in self.subviews {
            if point.x > view.frame.minX && point.x < view.frame.maxX
                && point.y > view.frame.minY && point.y < view.frame.maxY {
                return view
            }
        }
        return nil
    }
}


//use
let S = TetrisItemView.makeTetrisItem(shape: shape)
let L = S.clone()
print(L.shape)