标签出现在屏幕上

时间:2014-04-24 14:35:50

标签: ios objective-c

我的iPad屏幕上随机出现了多个标签。重要的是,它们都是完全可见的。因此,我使用下面的位置标签代码的最后4行来尝试确保标签的位置完全在屏幕的框架内。但是,即使我在这行中用200替换了100

int width = self.view.frame.size.height - 200;

偶尔标签只有一半在屏幕上或有时根本看不到。我知道如果我使用这些坐标手动定位按钮(我的唯一按钮,其余是标签)

 CGRect buttonFrame = CGRectMake( 0, 80, 100, 30 );

然后它不会被导航栏隐藏(视图控制器嵌入在导航中)。因此,我想确保,例如,标签位于距离顶部至少80个点的位置。这段代码不保证吗?为什么不呢?

排名标签代码

        CustomLabel *customerlabel = [self customLabel] //custom Label class
        timer.frame = CGRectMake(0, 0, 150, 50);
        CGRect newFrame;
        newFrame= timer.frame;
        int width = self.view.frame.size.width - 200;
        int height = self.view.frame.size.height - 200;
        newFrame.origin.x = arc4random() % width;
        newFrame.origin.y = arc4random() % height;

2 个答案:

答案 0 :(得分:1)

尝试这样的事情:

newFrame.origin.x = arc4random() % width; newFrame.origin.y = (arc4random() % height) + 80;

并从高度值中减去额外的80来补偿。

答案 1 :(得分:0)

您将customerlabel定位在0到height-200之间的随机高度,这意味着它也可以位于导航栏后面。尝试使用此代码段在条形码后启动:

if ([self respondsToSelector:@selector(edgesForExtendedLayout)])
    self.edgesForExtendedLayout = UIRectEdgeNone;

(这里的if是因为edgesForExtendedLayout仅存在于iOS7之后)

另一件事 - 如果你想强制标签至少像你一样按y = 80 - 你可以这样打电话:

newFrame.origin.y = 80 + arc4random() % (height-80);

您将得到一个介于80height

之间的数字