Зачистка всех цитат второй степени из одной статьи

Если они только белые и черные, было бы намного проще использовать UIView и установить его backgroundColor на .white или .black. Вы можете использовать свойство tag для UIView s, чтобы идентифицировать их.

В вашем обработчике gestureRecognizer recognizer.view сообщает вам view, который вызвал жест.

Вы можете назначить теги в Interface Builder . Например, если у вас есть квадрат квадратов 8x8, вы можете использовать двузначное число, где первая цифра - это строка, а вторая цифра - столбец. Таким образом, ваши теги будут 11, 12, ..., 87, 88.

func squareTapped(recognizer: UIGestureRecognizer) {
    if let view = recognizer.view {
        let tag = view.tag
        let row = tag / 10
        let col = tag % 10
        print("The view at row \(row), column \(col) was tapped")

        if view.backgroundColor == .black {
            view.backgroundColor = .white
        } else {
            view.backgroundColor = .black
        }
    }
}

Если вы хотите использовать изображения, загрузите изображения как свойства вашего viewController и назначить их на основе строки и столбца вашего изображения. Здесь я использовал сборку Outlet Collection , чтобы удерживать все UIImageView s. В Interface Builder вы связываете каждую из своих ячеек с свойством squares.

class BoardViewController: UIViewController {
    let blackImage = UIImage(named: "blackImage")!
    let whiteImage = UIImage(named: "whiteImage")!
    @IBOutlet var squares: [UIImageView]!
    var recognizersAdded = false

    func setUpBoard() {
        for imageview in squares {
            if !recognizersAdded {
                let recognizer = UITapGestureRecognizer(target: self, action: #selector(squareTapped))
                imageview.addGestureRecognizer(recognizer)
                imageview.isUserInteractionEnabled = true
            }

            let tag = view.tag
            let row = tag / 10
            let col = tag % 10

            // Just for demo purposes, set up a checkerboard pattern
            if (row + col) % 2 == 0 {
                imageview.image = blackImage
            } else {
                imageview.image = whiteImage
            }
        }
        recognizersAdded = true
    }

    func squareTapped(recognizer: UIGestureRecognizer) {
        if let view = recognizer.view as? UIImageView {
            let tag = view.tag
            let row = tag / 10
            let col = tag % 10
            print("The view at row \(row), column \(col) was tapped")

            if view.image == blackImage {
                view.image = whiteImage
            } else {
                view.image = blackImage
            } 
        }
    }
}
0
задан jmlarson 27 March 2019 в 12:52
поделиться