Intereting Posts
NSData возвращает nil при передаче определенных строк base64 Пользовательские дискретные распознаватели жестов могут отправлять несколько дискретных действий и отвечать требованиям requireGestureRecognizerToFail Удалите нижнюю черную панель UIImagePickerController Objective-C pass tableView indexPath для другого метода Предварительный просмотр фотографий UIImagePickerController скрыт неизвестной черной рамкой Автоматическая игра в iPad-приложениях с использованием HTML 5 установка значения UIApplicationExitsOnSuspend программно на ios Не удается установить Microsoft.ProjectOxford.Face NuGet в проект iOS Xamarin Studio Message Composer, как Twitter / Facebook Просмотр скрытых нерабочих Как поймать EXC_BAD_ACCESS (код = 1, адрес = 0x00XXXXXX)? Маскирование прозрачного изображения с другим фактическим изображением в iOS Как создать анимацию джэкпота Jetpack Joyride как обрезать видео, которое получается из галереи? Динамическая форма iOS в UITableViewCells, Получить значения

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

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

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

Скриншот

Я подклассифицировал 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; //... } 

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