Мне тоже удалось получить его. Вот как я это сделал:
Я создал функцию, в которой передаю форму и возвращаю местоположение, в котором я хочу, чтобы кусок перемещался в пределах видимости.
func randomizeLocation(shape: CGRect) -> CGPoint {
let randomX = arc4random_uniform(UInt32(gameBoard.frame.width - shape.width)) + UInt32(shape.width/2)
let randomY = arc4random_uniform(UInt32(gameBoard.frame.height - shape.height)) + UInt32(shape.height/2)
return CGPointMake(CGFloat(randomX), CGFloat(randomY))
}
Просто говоря о координате х (левая/правая) Логика здесь в том, что arc4random_uniform возвращает случайное # от 0 до заданного числа (- 1).
Но вы не хотите, чтобы число начиналось с нуля, потому что это положило бы объект на край экрана слева на 1/2. Итак, если вы добавите 1/2 ширины к общей функции, вы никогда не уйдете в левую часть экрана.
Чтобы не уходить с правой стороны экрана, вы хотите получить максимальное число ширины экрана минус 1/2 от ширины объекта. Чтобы получить это, вы должны указать номер, который вы передаете функции arc4random, как минус целиком ширина формы, , потому что когда вы добавляете половину назад, вы смещаете на 1/2 ширины своего объекта с обеих сторон (минимальное и максимальное возвращаемое значение).
Так, чтобы использовать эту функцию, возьмите свой объект, позволяет сказать UILabel и установить его центр это функции приводит, как, например:
let myLabel = UIButton(type: .Custom)
myLabel.frame = CGRectMake(100, 100, 100, 100)
myLabel.center = randomizeLocation(myLabel.bounds)
И что это. Btw, я не учитывал -1 в обратном b/c, я понял, что один пиксель был слишком незначителен, чтобы беспокоиться.
Я сработал, чтобы это сделать. – Coolboylp
Я пытаюсь выяснить то же самое, не могли бы вы разместить свое решение. – Lkabo
@Lkabo Я скоро отправлю код, я собрал решение из сети. – Coolboylp