В CABasicAnimation.fromValue
Я хочу, чтобы преобразовать CGPoint
в «класс», так что я использовал NSValue
valueWithPoint
, но в режиме устройства или тренажере один не работает ... нужно использовать NSMakePoint
или CGPointMake
, если в устройстве или тренажер.Преобразование CGPoint в NSValue
ответ
Существует UIKit
дополнение к NSValue
, который определяет функцию
+ (NSValue *)valueWithCGPoint:(CGPoint)point
см iPhone doc
Не думайте об этом как о «преобразовании» вашей точки. NSValue - это класс-оболочка, который содержит примитивные структуры, такие как NSPoint. В любом случае, вот что вам нужно. Это часть какао, но не Cocoa Touch. Вы можете добавить всю функцию в свой проект или просто сделать то же самое преобразование, где вам это нужно.
NSPoint NSPointFromCGPoint(CGPoint cgpoint) {
return (*(NSPoint *)&(cgpoint));
}
Не могли бы вы объяснить синтаксис, использованный в вашем ответе? Выглядит полезно. – Dimitris
этот синтаксис ** неправильный **, поэтому функция, независимо от того, что она ... (это не объяснено), _useless_. –
Синтаксис верен, но приведение в действие бесполезно, * CGPoint * и * NSPoint * являются одним и тем же типом (* NSPoint * он typedef'd должен быть * CGPoint *). –
& (CGPoint) -> получить ссылку (адрес) в CGPoint (NSPoint *) & (cgpoint) -> отличает эту ссылку на указатель NSPoint * (NSPoint ) (cgpoint) -> различия, которые указатель NSPoint возвращает NSPoint, чтобы вернуть тип возврата happy
Ответ @ashcatch очень полезен, но учтите, что эти методы из добавочных значений копирования, когда родные методы NSValue
хранят указатели! Здесь проверяет мой код его:
CGPoint point = CGPointMake(2, 4);
NSValue *val = [NSValue valueWithCGPoint:point];
point.x = 10;
CGPoint newPoint = [val CGPointValue];
здесь newPoint.x = 2; point.x = 10
CGPoint point = CGPointMake(2, 4);
NSValue *val = [NSValue valueWithPointer:&point];
point.x = 10;
CGPoint *newPoint = [val pointerValue];
здесь newPoint.x = 10; point.x = 10
Но будьте осторожны со вторым подходом, так как в примере вы храните указатель на ячейку памяти в куче. Поэтому, если вы используете созданный объект NSValue (или, скорее, указатель, сохраненный в нем) после того, как вы покинули область объявления точки, ваше приложение может потерпеть крах. – ashcatch
В Swift статический метод изменения к методу Инициализатора:
var pointValue = CGPointMake(10,10)
NSValue(CGPoint: pointValue)
В Swift вы можете изменить значение, подобное этому:
var pointValueare = CGPointMake(30,30)
NSValue(CGPoint: pointValueare)
- 1. Преобразование NSValue обратно CGPoint
- 2. CGPoint к NSValue и обратного
- 3. Получить значение CGPoint из NSValue в массиве
- 4. iOS: Сортировка NSArray упаковки NSValue CGPoint
- 5. Преобразование CGPoint из Plist
- 6. Преобразование MKMapPoint в NSValue в Swift
- 7. CGpoint to CCmenuItem в NSMutableArray
- 8. Pass CGPoint в уведомлении iOS
- 9. Преобразование значения «x» CGPoint ivar в NSTimeInterval?
- 10. Преобразование CLLocation или CLLocationCoordinate2D в CGPoint
- 11. Производительность - структуры в объекте NSValue и контейнере
- 12. конвертировать NSMutableArray в массив CGPoint
- 13. сравнить новое значение CGPoint с значением CGPoint в массиве
- 14. рекурсии в методах, алгоритм и NSValue вопрос
- 15. Как сохранить NSMutableArray из NSValue в CoreData?
- 16. CGPoint массив как другая структура
- 17. Анимация UIView To A CGPoint
- 18. NSKeyedArchiver: как архивировать NSValue, содержащий настраиваемую структуру
- 19. Преобразование CGPoint между плоскостями iPhone & CA
- 20. Преобразование NSValue в NSData и обратно, с правильным типом
- 21. AnyObject To CGPoint
- 22. Передача CGPoint * вместо CGPoint [] недопустима?
- 23. Назначение 'CGPoint' (aka 'struct CGPoint') из несовместимого типа 'id'
- 24. Вращение CGPoint вокруг другого CGPoint
- 25. NSDictionary to CGPoint
- 26. Преобразование географических координат в CGPoint и рисование линии в UIView
- 27. NSValue (CMTime:) в быстрой 3?
- 28. Кодирование в массив NSValue структур
- 29. Как узнать тип объекта, помещенного в NSValue с помощью Swift?
- 30. Подкласс NSValue или NSObject
Спасибо, очень полезно, но учтите, что эти методы копируют значения. Оформить мой ответ. – DanSkeel