Swift 3 Update
func isRectVisibleInView(rect: CGRect, inRect: CGRect) -> CGPoint {
var offset = CGPoint()
if CGRectContainsRect(inRect, rect) {
return CGPointMake(0, 0)
}
if rect.origin.x < inRect.origin.x {
offset.x = inRect.origin.x - rect.origin.x
} else if (rect.origin.x + rect.width) > (inRect.origin.x + inRect.width) {
offset.x = (rect.origin.x + rect.width) - (inRect.origin.x + inRect.width)
}
if rect.origin.y < inRect.origin.y {
offset.y = inRect.origin.y - rect.origin.y
} else if rect.origin.y + rect.height > inRect.origin.y + inRect.height {
offset.y = (rect.origin.y + rect.height) - inRect.origin.y + inRect.height
}
return offset
}
Swift 2.1
func isRectVisibleInView(rect: CGRect, inRect: CGRect) -> CGPoint {
var offset = CGPoint()
if CGRectContainsRect(inRect, rect) {
return CGPointMake(0, 0)
}
if rect.origin.x < inRect.origin.x {
offset.x = inRect.origin.x - rect.origin.x
} else if (rect.origin.x + rect.width) > (inRect.origin.x + inRect.width) {
offset.x = (rect.origin.x + rect.width) - (inRect.origin.x + inRect.width)
}
if rect.origin.y < inRect.origin.y {
offset.y = inRect.origin.y - rect.origin.y
} else if rect.origin.y + rect.height > inRect.origin.y + inRect.height {
offset.y = (rect.origin.y + rect.height) - inRect.origin.y + inRect.height
}
return offset
}
source
share