如何确定控件是否在显示区域内

时间:2014-07-18 21:30:08

标签: ios uilabel

如何确定控件是否在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

3 个答案:

答案 0 :(得分:1)

标签具有frame属性,可让您知道其超级视图中的位置。 superview具有bounds属性,可让您知道内容的位置。使用这些属性,您可以检查标签的框架是否在超视图的范围内。

答案 1 :(得分:0)

检查标签的frame.origin.x参数是否正在移动。假设父视图的x参数与屏幕的x = 0对齐,那么标签的x变得小于0,你的标签就不在视野范围内了。

答案 2 :(得分:0)

您还可以使用方法-convertRect:toView:查找视图落入视图控制器视图的位置。使用从方法返回的rect,检查是否有任何角落在主视图中。