比较两个值并返回两个中的最大值

时间:2014-12-28 21:50:53

标签: ios objective-c

我有两个CGPoints,它们是一个框架矩形的两个角的位置。

我需要给他们单独的指示 - 一组指令在顶部(在垂直平面上),另一组指示在底部。

我如何比较它们然后给它们单独的指示?

3 个答案:

答案 0 :(得分:0)

如果你有两个CGPoints,如果一个高于另一个,那么它的y值低于另一个。

例如:取两点:

CGPoint point1 = CGPointMake(100.0, 120.0);
CGPoint point2 = CGPointMake(100.0, 80.0);

你可以写一个方法:

- (NSComparisonResult)compareYValueOfPoint:(CGPoint)point1 toPoint:(CGPoint)point2
{
    CGFloat y1 = point1.y;
    CGFloat y2 = point2.y;

    if (y1 == y2) {
        return NSOrderedSame;
    } else if (y1 < y2) {
        return NSOrderedAscending;
    } else {
        return NSOrderedDescending;
    }
}

并将其命名为:

    NSComparisonResult result = [self compareYValueOfPoint:point1 toPoint:point2];

根据结果,使用相关点进行进一步操作。

答案 1 :(得分:0)

CGPoint是一个复合值(struct),包含两个字段x&amp; y

如果你有两个任意点,那么一个是&#34;高于&#34;如果其y坐标大于另一个y坐标,则为另一个。如果x坐标更大,则一个在另一个的右边。

CPPoint one, two;

if (one.y > two.y) { // one is above two }

if (two.x > one.x) { // two is to the right of one }

答案 2 :(得分:-1)

使用三元运算符将新变量初始化为已知的顺序......

CGPoint upperPoint = ((one.y < two.y) ?  one : two);
CGPoint lowerPoint = ((one.y < two.y) ? two : one); 

或者可能使用fMax / fMin类型的宏...

CGFloat lesserYvalue = ((CGFloat) fMinf(one.y , two.y) );
CGFloat greaterYvalue = ((CGFloat) fMaxf(one.y , two.y) );