Используйте встроенный компас iOS в приложении

Можно ли использовать собственный компас, который есть в iOS, в моем собственном приложении? Или мне нужно нарисовать и оживить свой собственный компас?


person theDuncs    schedule 13.02.2012    source источник


Ответы (1)


Нет родного компаса UIView. Чтобы использовать магнитометр, вам нужно будет использовать CoreLocation и следующий метод делегата:

- (void) locationManager:(CLLocationManager *)manager
             didUpdateHeading:(CLHeading *)newHeading

чтобы повернуть UIView так, чтобы он указывал на север (bearingView — это UIImageView):

float heading = newHeading.magneticHeading; //in degrees
float headingDegrees = (heading*M_PI/180); //assuming needle points to top of iphone. convert to radians
self.bearingView.transform = CGAffineTransformMakeRotation(headingDegrees);
person Keller    schedule 13.02.2012
comment
Да, я думаю, вы правы насчет родного компаса UIView. Я подожду немного, чтобы увидеть, если кто-то еще не согласен. Конечно да, didUpdateHeading — это способ обновить любое изображение, которое я хочу нарисовать. Большое спасибо. - person theDuncs; 13.02.2012
comment
Келлер - поскольку никто вам не возражал, я приму ваш ответ за правильный. Спасибо друг. - person theDuncs; 20.02.2012
comment
Без проблем. Чтобы создать вид компаса, указывающий на север, просто создайте изображение стрелки компаса и поверните его с помощью преобразования. Смотрите мое редактирование. - person Keller; 21.02.2012
comment
Вот полное руководство о том, как это реализовать, если кому-то интересно: blog.objectgraph.com/index.php/2012/01/10/ - person Albert Renshaw; 19.12.2012
comment
@AlbertRenshaw блог Ссылка .objectgraph.com/index.php/2012/01/10/ не работает. Пожалуйста, помогите мне создать компас в IOS Objective-C - person Dipanki Jadav; 17.11.2016
comment
@DipankiJadav Нам повезло! На Archive.org есть копия сайта до того, как он вышел из строя! https://web.archive.org/web/20150421132328/http://blog.objectgraph.com/index.php/2012/01/10/каксоздатькомпас-iphone - person Albert Renshaw; 17.11.2016