2013-07-12 3 views
1

Я пытаюсь выяснить, как изменить размер UIImage, который загружен тегом. Я успешно загрузил три изображения и отметил их.Изменить размер тегов UIImage

Следующий код «touchesEnded», который я использую для проверки этого, запускает NSLogs, поэтому код работает. В тесте resize я хотел бы изменить размер тега UIImage = 0 после его перемещения, и именно поэтому у меня есть его в «touchesEnded».

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event { 
NSLog(@">>> touchesEnded <<<"); 

UITouch *touch = [[event allTouches] anyObject]; 

endLocation = [[touches anyObject] locationInView:self]; 

switch ([touch view].tag) { 
    case 0: 
     NSLog(@"touchesEnded: 0"); 

     // Resize call here 

     break; 
    case 1: 
     NSLog(@"touchesEnded: 1"); 
     [[touch view] setCenter: CGPointMake(180, 400)]; 
     break; 
    case 2: 
     NSLog(@"touchesEnded: 2"); 
     [[touch view] setCenter: CGPointMake(10, 10)]; 
     break; 
    default: 
     break; 
} 
} 

Я хотел бы назвать этот метод, который я думаю, должно работать:

+ (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
//UIGraphicsBeginImageContext(newSize); 
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
UIGraphicsEndImageContext(); 
return newImage; 

}

Источник: The simplest way to resize an UIImage? (Paul Lynch)

Это, как я добавьте UIImages:

- (void)viewDidLoad 
{ 
[super viewDidLoad]; 
// Do any additional setup after loading the view, typically from a nib. 

NSArray *cards = [[NSArray alloc]initWithObjects:@"img1.png", @"img2.png", @"img3.png",nil]; 

int x = 0; 

for (NSString *theCards in cards) { 
    DragView *actualCards = [[DragView alloc] initWithImage:[UIImage imageNamed:theCards]]; 
    actualCards.tag = x; 
    NSLog(@"Tag: %i", x); 
    x++; 
    [self.view addSubview:actualCards]; 

} 
} 

Тег 1 и 2 предназначен для других испытаний.

Но я просто не могу заставить его работать с помощью UIImage с тегом, поэтому я хотел бы попросить о помощи или указаниях, как вызвать функцию и изменить размер UIImage.

+0

Что не работает? Вы получаете какие-либо ошибки? – rdelmar

+0

@rdelmar Я не понимаю, как назвать метод с помощью тегов UIImages? – PeterK

ответ

0

Я думаю, вы спрашиваете, как получить изображение. Из вашего кода сначала нужно получить тегированный вид, который является экземпляром DragView, а затем вы можете получить изображение, просто установив изображение как свойство DragView.

1

Внутри вашего случая 0: п, touch.view будет изображение с тегом 0, так что просто назвать свой метод изменения размера с этой точки зрения в качестве аргумента:

UIImage *resizedImage = [self imageWithImage:(UIImage *)touch.view scaledToSize:(CGSize)newSize]; 

Вам нужно изменить метод для метода экземпляра для этого:

- (UIImage *)imageWithImage:(UIImage *)image scaledToSize:(CGSize)newSize { 
//UIGraphicsBeginImageContext(newSize); 
UIGraphicsBeginImageContextWithOptions(newSize, NO, 0.0); 
[image drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; 
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();  
UIGraphicsEndImageContext(); 
return newImage; 
+0

У меня снова возникают проблемы со следующим сообщением «+ [UIImage imageWithImage: scaledToSize:]: непризнанный селектор, отправленный в класс 0xa74154 2013-07-14 06: 49: 28.320 DragTest4 [23192: a0b] *** Завершение приложения из-за неперехваченного исключения «NSInvalidArgumentException», причина: «+ [UIImage imageWithImage: scaledToSize:]: нераспознанный селектор, отправленный в класс 0xa74154 '" – PeterK

+0

@PeterK, есть несколько способов исправить это. Вы можете создать категорию в UIImage и поместить здесь метод imageWithImage: scaledToSize:. Другой способ - сделать его методом экземпляра (а не классом). Я обновил свой ответ, чтобы показать это. – rdelmar

+0

Я все еще получаю ту же проблему. Я считаю, что «(UIImage *) touch.view» (тег) является проблемой, поскольку он работает, когда я тестирую прямую ссылку на изображение. – PeterK

Смежные вопросы