Intereting Posts
Модель – Контроллер – Связь Как нарисовать связь между двумя объектами в основных данных? Xamarin.Forms.WebView.Navigating событие, поднятое на iOS для внутренней навигации UITextView верхняя часть текста отображается наполовину при нажатии на новой строке, остальные обрезаются Как разработать приложение на основе TabBar с функциями входа в систему? Как перенести URL в цепочку ключей Как создать расширение UIView с переменным строковым параметром в Swift? Использование QLPreviewController / UIWebView для предварительного просмотра документов Word, имеющих поля слияния Освобождение иваров в Objective-C Как узнать, когда AVPlayer использует только битовую скорость звука? Невозможно добавить к контейнерам App Group права на идентификатор приложения Как отобразить представление? Сравните две строки и удалите общие элементы iOS: Пользовательский UITableViewCell от nib без повторного использования? Есть ли способ остановить avplayer, отправив поле HTTP-заголовка диапазона

выноска аннотации пользовательских карт – как управлять шириной

Я успешно внедрил пользовательский код выписки из аннотации из сообщения в асинхронном блоге . (Когда пользователь отбирает вывод карты, я показываю настроенное изображение вместо стандартного вида выноски).

Единственная оставшаяся проблема заключается в том, что выноска занимает всю ширину представления, и приложение будет выглядеть намного лучше, если ширина соответствует изображению, которое я использую.

Скриншот

Я подклассифицировал MKAnnotationView, и когда я установил его contentWidth в ширину изображения, треугольник не всегда указывает на вывод, или изображение даже не внутри его представления оболочки. Изображения ошибочны

Любая помощь или предложения были бы замечательными. Благодарю.

Solutions Collecting From Web of "выноска аннотации пользовательских карт – как управлять шириной"

Я столкнулся с аналогичной проблемой при реализации CalloutMapAnnotationView для iPad. В принципе, я не хотел, чтобы версия iPad занимала всю ширину mapView.

В методе prepareFrameSize задайте свою ширину:

 - (void)prepareFrameSize { // ... // changing frame x/y origins here does nothing frame.size = CGSizeMake(320.0f, height); self.frame = frame; } 

Затем вам нужно будет рассчитать xOffset, основанный на parentAnnotationView:

 - (void)prepareOffset { // Base x calculations from center of parent view CGPoint parentOrigin = [self.mapView convertPoint:self.parentAnnotationView.center fromView:self.parentAnnotationView.superview]; CGFloat xOffset = 0; CGFloat mapWidth = self.mapView.bounds.size.width; CGFloat halfWidth = mapWidth / 2; CGFloat x = parentOrigin.x + (320.0f / 2); if( parentOrigin.x < halfWidth && x < 0 ) // left half of map xOffset = -x; else if( parentOrigin.x > halfWidth && x > mapWidth ) // right half of map xOffset = -( x - mapWidth); // yOffset calculation ... } 

Теперь в drawRect:(CGRect)rect перед тем, как вычерчивается пузырь drawRect:(CGRect)rect :

 - (void)drawRect:(CGRect)rect { // ... // Calculate the carat lcation in the frame if( self.centerOffset.x == 0.0f ) parentX = 320.0f / 2; else if( self.centerOffset.x < 0.0f ) parentX = (320.0f / 2) + -self.centerOffset.x; //... } 

Надеюсь, это поможет вам на правильном пути.