【问题标题】:Check how close UILabels are to each other检查 UILabel 之间的距离
【发布时间】:2012-06-09 01:31:12
【问题描述】:

我正在尝试制作一个代数方程混乱的游戏。我已经为方程的每个组成部分分配了一个出口。例如,如果等式是:

x2 + y = 2(a+b)

那么 x2(x 的平方)、+、y、= 和 2(a+b) 都将是它自己的出口。但是方程式会变得混乱,我希望用户将标签出口移动到正确的顺序。我启用了 touchesMoved,但我的问题在于检查等式的顺序是否正确。我会将代码包装到IBAction 按钮操作中,但是如何分析文本?我会检查每个标签之间的偏移量吗?有没有简单的方法/API来做到这一点?谢谢!

【问题讨论】:

  • 在确定标签是否位于有效位置或将它们“捕捉”到有效位置时,您只想检查偏移量。为了确定正确的顺序,您应该抽象整个概念并创建封装方程式的逻辑的组件。然后也适用于一般的整个方程。也许你可以实现一些方法来检查你是否有一个有效的订单。从 MVC 架构的角度考虑问题/解决方案。

标签: objective-c ios xcode uilabel


【解决方案1】:

假设您的标签名为 xLabelplusLabelyLabelequalsLabelabLabel,您可以执行以下操作:

NSUInteger xLeftBorder = CGRectGetMinX(xLabel.frame);
NSUInteger plusLeftBorder = CGRectGetMinX(plusLabel.frame);
NSUInteger yLeftBorder = CGRectGetMinX(yLabel.frame);
NSUInteger equalsLeftBorder = CGRectGetMinX(equalsLabel.frame);
NSUInteger abLeftBorder = CGRectGetMinX(abLabel.frame);

if(xLeftBorder < plusLeftBorder && plusLeftBorder < yLeftBorder && yLeftBorder < equalsLeftBorder && equalsLeftBorder < abLeftBorder){

    //Correct!
}

else{
    //Incorrect
}

这有点笨拙,但确实有效。一个更好的方法是把它放在一个函数中,每个参数都是一个要检查的标签。例如:

bool isCorrect = [self checkIf:xLabel isLessThan: plusLabel isLessThan: yLabel isLessThan:equalsLabel isLessThan:abLabel];

这是假设您编写的函数返回一个布尔值。

希望这有帮助!

【讨论】:

  • 谢谢!我将检查此代码并在一个小时左右回复您!
  • 当然。慢慢来。但是,我不确定我是否会在一个小时内醒来。不过,我会尽快回复您。
猜你喜欢
  • 1970-01-01
  • 2022-12-11
  • 2019-09-16
  • 2012-06-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多