Działa świetnie na iOS 7, ale pozycja UIImageView zmienia się na iO8 jak obrazy poniżej. Pozycja rightCalloutAccessoryView przesuwa się w górnym prawym rogu.UIImageView jako objaśnienie w lewoCalloutAccessoryView automatycznie przesuwa lewy górny róg
Czy ktoś może pomóc?
Pozdrawiam.
w IOS 7
w IOS 8
- (void) MapView (MKMapView *) MapView didSelectAnnotationView (MKAnnotationView *) widok {
if(![view.annotation isKindOfClass:[MKUserLocation class]]) {
UBAnnotation *selectedAnnotation = view.annotation;
NSURL * imageUrlAtIndex = [NSURL URLWithString:[[self.objects objectAtIndex:selectedAnnotation.idx] ad_thumbImageUrl]];
UIImageView * leftCalloutView = [[UIImageView alloc] initWithFrame:CGRectMake(2, 2, 40, 40)];
[leftCalloutView setImageWithURL:imageUrlAtIndex];
leftCalloutView.layer.masksToBounds = YES;
leftCalloutView.layer.cornerRadius = 6;
view.leftCalloutAccessoryView = leftCalloutView;
}
}
- (MKAnnotationView *) MapView (MKMapView *) MapView viewForAnnotation (ID) Adnotacja {
MKPinAnnotationView *annView=[[MKPinAnnotationView alloc] initWithAnnotation:annotation reuseIdentifier:@"currentloc"];
if ([annotation isKindOfClass:[MKUserLocation class]]) {
return nil;
} else {
annView.image = [UIImage imageNamed:@"pin"];
annView.rightCalloutAccessoryView = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
annView.rightCalloutAccessoryView.tintColor = [UBColor ubGreenColor];
annView.animatesDrop= NO;
annView.canShowCallout = YES;
}
return annView;
}
To brzmi jak błąd w systemie iOS 8, jeśli trzeba to naprawić. – Ramis
"LeftCalloutAccessoryView" ma ustawiony autolayout tak, że jego lewy margines i górny margines są takie same. I jest wyśrodkowany pionowo z priorytetem "250". Jednak priorytetem odporności na ściskanie etykiety jest "750". Jeśli etykieta ma zostać obcięta, spowoduje to przesunięcie lewego widoku objaśnienia w lewo, co spowoduje przesunięcie w górę. –