2017-02-04 3 views
0

Я новичок в Objective-C. Я создал анимацию, которая перемещает 3 кнопки вверх. Эти кнопки содержат изображения. Однако, когда происходит эта кнопка, она изменяет размеры изображений кнопок и делает их ОГРОМНЫМИ. Я попытался исправить код ниже, чтобы изменить размер изображений кнопок, но я все равно получаю ОГРОМНЫЕ кнопки. Может кто-нибудь, пожалуйста, помогите мне? Ширина: 78 Высота: 76. Я попытался заменить ширину и высоту, но он все еще не работает. Примечание. Просто исправьте код, мне не нужен совершенно другой ответ.Как изменить размер анимации кнопок программно

-(IBAction)Search:(id)sender { 

CGFloat screenWidth = self.view.bounds.size.width; 
CGFloat screenHeight = self.view.bounds.size.height; 

CGFloat normalizedX = (124/320); // You calculate these 'normalized' numbers, possibly from a designer's spec. 
// it's the percent the amount should be over, as number from 0-1. 
// This number is based on screen width of 320 having x 124 pt. 

CGFloat startingX = normalizedX * screenWidth; 
CGFloat startingY = (475/200) * screenHeight; 
CGFloat width = (42/40) * screenWidth; 
CGFloat height = (30/30) * screenHeight; 

CGRect startingRect = CGRectMake(startingX, startingY, width, height); 

self.button.frame = startingRect; 
self.buttonTwo.frame = startingRect; 
self.buttonThree.frame = startingRect; 

// animate 
[UIView animateWithDuration:0.75 animations:^{ 
    CGFloat firstX = (13/770) * screenWidth; 
    CGFloat lowerY = (403/370) * screenHeight; 
    self.button.frame = CGRectMake(firstX, lowerY, width, height); 

    CGFloat secondX = (124/424) * screenWidth; 
    CGFloat upperY = (347/447) * screenHeight; 
    self.buttonTwo.frame = CGRectMake(secondX, upperY, width, height); 

    CGFloat thirdX = (232/680) * screenWidth; 
    self.buttonThree.frame = CGRectMake(thirdX, lowerY, width, height); 
}]; 
} 
+1

Вы хотите, чтобы кнопки мгновенно переходили на тот же самый startRect, а затем анимировали разные адреса? Вы хотите, чтобы их размеры менялись вообще? Выведенный код явно изменяет размеры кнопок, а наблюдение @ DuncanC - это место по математике с плавающей запятой. Если вы хотите, чтобы кнопки оставались фиксированными, используйте CGRectOffset на своих кадрах, которые управляют только происхождением. – danh

ответ

2

Похоже, что ваша высота и ширина математики неправильны.

(42/40) * screenWidth будет упрощен до (1) * screenWidth или полной ширины экрана (выражение 42/40 будет выполнено с использованием целочисленной математики, в результате чего будет 1.0. Если он использует с плавающей запятой, d получите 1.05 * screenWidth, что сделало бы изображения еще большими.)

У вас аналогичная проблема с расчетом высоты. Вы устанавливаете кнопку на полную высоту экрана и немного шире.

+0

Да, это код, с которым я столкнулся. Я много раз менял его, но он не менял размер кнопок. Он должен быть Width: 78 Height: 76. Что бы вы его изменили? Спасибо за помощь! – Elizabeth429

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