2011-11-20 60 views
0

我正在写一个方法,基于CGRect中的触摸位置来更改图像和var。我目前使用一系列if语句手动反转触摸位置。我不相信这是一个特别有效的方法。有没有办法在视图中反转触摸位置?

它适用于图像变化,但对于var变化(我还没有实现),我需要从1 - 100以+1为增量进行缩放。

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event { 
    UITouch *touch = [touches anyObject]; 

    CGPoint point = [touch locationInView: self.view]; 
    if (CGRectContainsPoint(CGRectMake(0, 20, 117, 200), point)) { 

    if (point.y >= 20 && point.y <= 32) //12 
     imageA.image = [UIImage imageNamed:@"ChemA-15.png"]; 
    if (point.y >= 33 && point.y <= 45) 
     imageA.image = [UIImage imageNamed:@"ChemA-14.png"]; 
    if (point.y >= 46 && point.y <= 58) 
     imageA.image = [UIImage imageNamed:@"ChemA-13.png"]; 
    if (point.y >= 59 && point.y <= 70) 
     imageA.image = [UIImage imageNamed:@"ChemA-12.png"]; 
    if (point.y >= 71 && point.y <= 82) 
     imageA.image = [UIImage imageNamed:@"ChemA-11.png"]; 
    if (point.y >= 83 && point.y <= 94) 
     imageA.image = [UIImage imageNamed:@"ChemA-10.png"]; 
    if (point.y >= 95 && point.y <= 106) 
     imageA.image = [UIImage imageNamed:@"ChemA-9.png"]; 
    if (point.y >= 107 && point.y <= 118) 
     imageA.image = [UIImage imageNamed:@"ChemA-8.png"]; 
    if (point.y >= 119 && point.y <= 130) 
     imageA.image = [UIImage imageNamed:@"ChemA-7.png"]; 
    if (point.y >= 131 && point.y <= 142) 
     imageA.image = [UIImage imageNamed:@"ChemA-6.png"]; 
    if (point.y >= 143 && point.y <= 154) 
     imageA.image = [UIImage imageNamed:@"ChemA-5.png"]; 
    if (point.y >= 155 && point.y <= 166) 
     imageA.image = [UIImage imageNamed:@"ChemA-4.png"]; 
    if (point.y >= 167 && point.y <= 178) 
     imageA.image = [UIImage imageNamed:@"ChemA-3.png"]; 
    if (point.y >= 179 && point.y <= 190) 
     imageA.image = [UIImage imageNamed:@"ChemA-2.png"]; 
    if (point.y >= 191 && point.y <= 202) 
     imageA.image = [UIImage imageNamed:@"ChemA-1.png"]; 

    } 
} 

有没有更好的方法来做到这一点?感谢您提供的任何帮助。

回答

3

你可以计算出你需要什么样的形象,如:

int image = 15 - (int)((point.y - 20)/13); 

,然后从中进行串并为您喜欢的边界:

if(image >= 1 && image <= 15) 
    imageA.image = [UIImage imageNamed: 
        [NSString stringWithFromat: @"ChemA-%d.png", image]]; 
+0

哦,那是一个非常有趣的做这件事的方式。从最大值开始,然后取走位置。永远不会想到这一点。辉煌。谢谢! – squarefrog

相关问题