代码之家  ›  专栏  ›  技术社区  ›  nacho4d

为此编写宏:(Objective-C)

  •  2
  • nacho4d  · 技术社区  · 14 年前

    - (CGPoint) _convertCGPointCT2UIKit:(CGPoint)ctPoint{
     CGPoint uikitPoint = CGPointMake(ctPoint.x + INITIAL_HORIZ_OFFSET, 
              self.bounds.size.height - ctPoint.y - INITIAL_VERT_OFFSET);
     return uikitPoint;
    }
    

    有没有办法把它变成宏? 我试过这个,但我得到的错误像“;期望在“之前”等等。

    #define CGPointUIKit2CT(p) CGPointMake(p.x - INITIAL_HORIZ_OFFSET, self.bounds.size.height - p.y - INITIAL_VERT_OFFSET);
    

    提前谢谢。

    伊格纳西奥

    2 回复  |  直到 14 年前
        1
  •  5
  •   Chris Garrett    14 年前

    以下是一些经验法则:

    • 包裹 一切 括号内

    我的答案是:

     #define CGPointUIKit2CT(p) CGPointMake(((p).x) - INITIAL_HORIZ_OFFSET, self.bounds.size.height - ((p).y) - INITIAL_VERT_OFFSET)
    
        2
  •  2
  •   Louis Gerbarg    14 年前

    static inline
    CGPoint CGPointUIKit2CT(UIView *self, CGPoint  ctPoint) {
      CGPoint uikitPoint = CGPointMake(ctPoint.x + INITIAL_HORIZ_OFFSET,
          self.bounds.size.height - ctPoint.y - INITIAL_VERT_OFFSET);'
    
      return uikitPoint;
    }
    

    这将编译成与宏相同的内容,但将提供更好的调试和分析信息。