如何确定控件是否在iOS的显示区域内?
e.g。
有一个UILabel
,它会从屏幕右侧向左滑动,直到它从边框左侧滑出屏幕,如何确定它是否已滑出边框它?
我使用动画块模型。动画完成后,我们可以确定Label已超过0;
现在我要删除标签。
e.g。
[UIView animateWithDuration:5.5
delay:0.1
options: UIViewAnimationOptionCurveLinear | UIViewAnimationOptionRepeat
animations:^
{
[UIView setAnimationRepeatCount:3];
CGRect lsframe = labelShow.frame;
lsframe.origin.x = 0;
lsframe.origin.y = dphv.mImgContent.frame.origin.y;
lsframe.size.width = 8;
lsframe.size.height = imgH;
CGRect frame = labelShow.frame;
frame.origin.x = 600;
labelShow.frame = frame;
frame = labelShow.frame;
frame.origin.x = -180;
labelShow.frame = frame;
}
completion:^(BOOL finished)
{
NSLog(@"animation finished");
labelShow = nil; //but this line has error, how can I do this;
}];
我使用这个例子,但这个例子有一个非常严重的问题,导致内存增加,甚至超过100M,但我不知道如何修复改革。这是网址:https://github.com/yinkou/OBaconView
答案 0 :(得分:1)
标签具有frame
属性,可让您知道其超级视图中的位置。 superview具有bounds
属性,可让您知道内容的位置。使用这些属性,您可以检查标签的框架是否在超视图的范围内。
答案 1 :(得分:0)
检查标签的frame.origin.x参数是否正在移动。假设父视图的x参数与屏幕的x = 0对齐,那么标签的x变得小于0,你的标签就不在视野范围内了。
答案 2 :(得分:0)
您还可以使用方法-convertRect:toView:
查找视图落入视图控制器视图的位置。使用从方法返回的rect,检查是否有任何角落在主视图中。