[英]Move view within superview's bounds (iOS)
在一个应用程序中,我试图将一个视图在另一个视图内移动到随机位置。 我已经能够做到这一点,如下所示:
mySmallerView.center = randomizeLocation()
func randomizeLocation() -> CGPoint {
let randomX = arc4random_uniform(UInt32(mainView.frame.width))
let randomY = arc4random_uniform(UInt32(mainView.frame.height))
return CGPointMake(CGFloat(randomX), CGFloat(randomY))
}
这样可以很好地移动它,但是它使用居中,所以有时,左边不在屏幕上,或者右边,顶部和/或底部不在屏幕上,因为它的中心可以推动视图边框的极限。
我将如何改善randomizeLocation()
以确保要移动的视图的边界/框不超过其父视图的范围/框架?
有没有办法做到这一点?
我认为应该像这样,最大randomX一定不能是mianView.frame.width
func randomizeLocation() -> CGPoint {
let randomX = arc4random_uniform(UInt32(mainView.frame.width - (mySmallerView.frame.width))) + (mySmallerView.frame.width / 2)
let randomY = arc4random_uniform(UInt32(mainView.frame.height - (mySmallerView.frame.height))) + (mySmallerView.frame.height / 2)
}
我认为您需要确保不要将较小的视图放得太远或太远(通过添加- (mySmallerView.frame.width / 2)
)。 您还想确保不要向左或向上移动太远(通过添加+ (mySmallerView.frame.width / 2)
)。
func randomizeLocation() -> CGPoint {
let randomX = arc4random_uniform(UInt32(mainView.frame.width - (mySmallerView.frame.width / 2))) + (mySmallerView.frame.width / 2)
let randomY = arc4random_uniform(UInt32(mainView.frame.height - (mySmallerView.frame.height / 2))) + (mySmallerView.frame.height / 2)
return CGPointMake(CGFloat(randomX), CGFloat(randomY))
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.