2014-11-11 4 views
0

Я пытаюсь анимировать кнопку по произвольному пути. Для этого мне нужно создать путь, к которому я использую BezierPath for.bezierPath moveToPoint неправильная система координат

Однако, что-то странное происходит, когда я устанавливаю moveToPoint на 0,0 вместо запуска анимации в левом верхнем углу экрана, кнопка появляется немного вверху и влево, поэтому она лишь частично видима.

Что здесь происходит? Использует ли moveToPoint какую-то другую систему координат?

Кронштейн кнопки установлен на стандартный верхний, левый.

- (void)viewDidLoad 
{ 
    [super viewDidLoad]; 
    // Do any additional setup after loading the view, typically from a nib. 
    bezierPath = [[UIBezierPath alloc]init]; 
    [bezierPath moveToPoint:CGPointMake(0, 0)]; 
    [bezierPath addLineToPoint:CGPointMake(52, 83)]; 
    [bezierPath addLineToPoint:CGPointMake(45, 59)]; 
    [bezierPath addLineToPoint:CGPointMake(65, 30)]; 
} 

-(void)randomAnimation 
{ 
    CAKeyframeAnimation* keyframeAnimation = [CAKeyframeAnimation animationWithKeyPath:@"position"]; 
    keyframeAnimation.duration = 4.0; 
    keyframeAnimation.path = [bezierPath CGPath]; 
    [self.rndBtn.layer addAnimation:keyframeAnimation forKey:@"position"]; 
} 

ответ

1

Вы анимируете свойство position ваших слоев, которое по умолчанию установлено в центр слоя. Если вы установите центр слоя вашей кнопки на 0,0, он будет центрирован по краю экрана и полуоткрыт.

Вам необходимо установить начальную точку на ширину/2, высоту/2. В качестве альтернативы вы можете перемещать точку привязки слоя, но это имеет побочные эффекты.

+0

ahh thnks ....... –

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