Как оживить изображение в объективе-c? - PullRequest
0 голосов
/ 19 июля 2011

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

Ответы [ 4 ]

1 голос
/ 19 июля 2011

Я полагаю, вы подклассифицировали UIImageView - если вы этого не сделали, вам следует сделать это сейчас.Кроме того, убедитесь, что для .userInteractionEnabled изображения установлено значение YES!

Интерфейс:

@interface YourImageView : UIImageView
@property (nonatomic, assign) CGPoint originalCenter;
@property (nonatomic, assign) CGPoint touchLocation;
@end

Импламентация:

@implementation YourImageView
@synthesize originalCenter;
@synthesize touchLocation;

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesBegan:touches withEvent:event];

    self.originalCenter = self.center;
    self.touchLocation = [[touches anyObject] locationInView:self.superview];
    self.transform = CGAffineTransformMakeScale(1.5, 1.5);
}

- (void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesMoved:touches withEvent:event];

    CGPoint touch = [[touches anyObject] locationInView:self.superview];
    CGFloat xDifference = (touch.x - self.touchLocation.x);
    CGFloat yDifference = (touch.y - self.touchLocation.y);

    CGPoint newCenter = self.originalCenter;
    newCenter.x += xDifference;
    newCenter.y += yDifference;
    self.center = newCenter;
}

- (void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesEnded:touches withEvent:event];

    self.originalCenter = CGPointZero;
    self.touchLocation = CGPointZero;
    self.transform = CGAffineTransformMakeScale(1.0, 1.0);
}

- (void)touchesCancelled:(NSSet *)touches withEvent:(UIEvent *)event
{
    [super touchesCancelled:touches withEvent:event];

    self.originalCenter = CGPointZero;
    self.touchLocation = CGPointZero;
    self.transform = CGAffineTransformMakeScale(1.0, 1.0);
}
@end

Вы, конечно, можете деформировать себя.transform = sth в анимацию, чтобы она выглядела лучше.;)

1 голос
/ 19 июля 2011

Давайте догадаемся, что ваше изображение реализовано как UIImageView. Если это так, вы можете использовать простое преобразование.

yourImage.transform = CGAffineTransformMakeScale (scale.x, scale.y);

масштаб (1,0 - исходный размер)

0 голосов
/ 19 июля 2011

Поместите этот код в ваши касания. Начало

[UIView animateWithDuration:0.3 animations:^{
    myImage.transform = CGAffineTransformMakeScale(1.5, 1.5);
}];

Поместите этот код в ваши касания.

0 голосов
/ 19 июля 2011

Вы можете увеличить размер кадра просмотра изображения и масштабировать изображение, отображаемое в нем (используя масштабирование изображения для подгонки) в методе touchesBegan.Вы можете установить рамку на оригинальный размер в методе touchesEnded.Таким образом, вы можете добиться желаемого эффекта анимации. Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...