#objective-c
#objective-c
Вопрос:
Я назначаю CGFloat animatedDistance и получаю эту ошибку.
Здесь я присваиваю значение animatedDistance
static const CGFloat KEYBOARD_ANIMATION_DURATION = 0.3;
static const CGFloat LANDSCAPE_KEYBOARD_HEIGHT = 140;
heightFraction также является CGFloat .
if (orientation == UIInterfaceOrientationPortrait ||
orientation == UIInterfaceOrientationPortraitUpsideDown)
{
animatedDistance = floor(PORTRAIT_KEYBOARD_HEIGHT * heightFraction);
}
else
{
animatedDistance = floor(LANDSCAPE_KEYBOARD_HEIGHT * heightFraction);
}
Какой тип должен быть animatedDistace? Кто-нибудь может мне помочь?
Ответ №1:
floor
возвращает a double
. На некоторых платформах CGFloat
является float
. animatedDistance
должно быть введено как a double
(при необходимости вы можете преобразовать его в a CGFloat
).
Комментарии:
1. Вы можете неявно выполнять приведение между
double
иfloat
. Вы можете получить предупреждение, в зависимости от того, насколько параноидальным вы настроили компилятор, но это не серьезная ошибка, если вы не просили об этом.
Ответ №2:
Используйте это, чтобы получить вектор… CGpoint vector = ccpSub(cgpoint 1, cgpoint 2);
И если вам нужны двойные / плавающие значения, сделайте это:
CGPoint.Расположение
для чего бы вы ни пытались найти координаты, затем назначьте значение с плавающей CGPoint.location.y
точкой и другое значение с плавающей точкой CGPoint.location.x
Для этого, кстати, вам нужен cocos2d. Я думаю.
Комментарии:
1.
CGPoint
не имеетlocation
элемента; это местоположение. И какccpSub
, который вычитает одну точку из другой, помогает спрашивающему умножить одно расстояние на дробь?
Ответ №3:
Мне кажется, что вы объявили animatedDistance
как содержащий какой-то указатель, например NSNumber *
, или структуру, например CGSize
. В любом случае, вы не можете назначить CGFloat
там.
Если animatedDistance
содержит объект NSNumber, создайте его вокруг значения. Когда вы задавали этот вопрос, способ сделать это был [NSNumber numberWithDouble:floor(…)]
. Теперь вы можете просто использовать @(floor(…))
.
Если animatedDistance
содержит a CGSize
или другую структуру, вам нужно будет решить для себя, как осмысленно преобразовать из единственного числа, которое у вас есть, в структуру, которую вы хотите.