Проверка правильности bool в течение x секунд - Swift - PullRequest
0 голосов
/ 16 марта 2019

Я использую VNDetectRectanglesRequest и хочу проверить, находится ли CGRect моего обнаруженного прямоугольника в другом CGRect в течение 1 секунды .Вот мой код:

let x = self.view.frame.width * detectedRectangle.boundingBox.origin.x
let height = self.view.frame.height * detectedRectangle.boundingBox.height
let y = self.view.frame.height * (1 - detectedRectangle.boundingBox.origin.y) - height
let width = self.view.frame.width * detectedRectangle.boundingBox.width
let rectangleDetected = CGRect(x: x, y: y, width: width, height: height)

self.redView.frame = rectangleDetected

let outsideGuideRect = CGRect(x: self.boardMargin*1/2, y: (self.view.frame.height-self.view.frame.width+1/2*self.boardMargin)/2, width: self.view.frame.width-1/2*self.boardMargin, height: self.view.frame.width-1/2*self.boardMargin)
print(outsideGuideRect.contains(rectangleDetected))
if outsideGuideRect.contains(sudokuBoardRect) {

    // HERE I WANT TO CHECK IF THIS IF STATEMENT IS TRUE FOR 1 second

}

Приведенный выше код находится в функции, которая запускается каждый кадр.Как я могу проверить, верно ли утверждение if в течение одной секунды?Спасибо!

1 Ответ

1 голос
/ 16 марта 2019

Что я понял из вашего вопроса: «вы хотите выполнить действие через 1 секунду после того, как ваш прямоугольник B войдет в прямоугольник A (не выходя)».

Следующее может быть вероятным решением, которое я получил из головы, может быть что-то лучше, если мы немного подумаем.

//initialize _insideRect as false globally
if outsideGuideRect.contains(sudokuBoardRect) {
    // HERE I WANT TO CHECK IF THIS IF STATEMENT IS TRUE FOR 1 second
    if (!_insideRect) {
      _insideRect = true;
      DispatchQueue.main.asyncAfter(deadline: .now() + .seconds(0.1)) {
        if (_insideRect) {
          // your function here
        }
      }
    }
}else{
    _insideRect = false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...