Objective c 目标C,重复相同的操作,但旋转90度

Objective c 目标C,重复相同的操作,但旋转90度,objective-c,uikit,Objective C,Uikit,我有一些代码,这是一个很小的摘录: surfaceDimension = self.window.frame.size.height; sliderDistancePerPoint = 1.0f / surfaceDimension / FINGER_RATIO; addThisToSlider = sliderDistancePerPoint * diff * 1.6f; 在子类中,我覆盖此方法,并重复相同的代码,但旋转: surfaceDimension = self.window.fra

我有一些代码,这是一个很小的摘录:

surfaceDimension = self.window.frame.size.height;
sliderDistancePerPoint = 1.0f / surfaceDimension / FINGER_RATIO;
addThisToSlider = sliderDistancePerPoint * diff * 1.6f;
在子类中,我覆盖此方法,并重复相同的代码,但旋转:

surfaceDimension = self.window.frame.size.width;
sliderDistancePerPoint = 1.0f / surfaceDimension / FINGER_RATIO;
addThisToSlider = sliderDistancePerPoint * diff * 1.6f;

我可以通过哪些(各种)方式虚拟化此代码,使其可以在任一方向工作?当然,我可以将
surfaceDimension
制作成一个方法,但我需要对所有依赖项重复这个过程。其他想法?

使用标准的OO实践并使方法足够通用,您可以非常轻松地实现这一点。这是对继承的一种相当体面的使用

// override in subclass
- (BOOL) useXOrientation {
    return NO;
}

- (CGPoint) setOriginFrom:(CGPoint)sourcePoint to:(CGPoint)targetPoint {
    if (self.useXOrientation)
        targetPoint.x = sourcePoint.x;
    else
        targetPoint.y = sourcePoint.y;
    return targetPoint;
}



- (float) sizeOfDimension:(CGSize)size {
    if (self.useXOrientation)
        return size.width;
    else
        return size.height;
}

// example method
- (void) resetFirstTouch:(CGPoint)point {
    self.firstTouch = [self setOriginFrom:point to:self.firstTouch];
    self.firstTouchInParent = [self setOriginFrom:[self convertPoint:self.firstTouch toView:self.superview] to:self.firstTouchInParent];
}