Ios UIImageView作为详图索引';s leftCalloutAccessoryView自动移动左上角
它在iOS 7上运行得很好,但UIImageView在iOS 8上的位置会发生变化,如下图所示。此外,右详图索引辅助视图位置会移动右上角 有人能帮忙吗 干杯 在iOS 7中 在iOS 8中 -(无效)地图视图:(MKMapView*)地图视图未选择注释视图:(MKAnnotationView*)视图 { } -(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释{Ios UIImageView作为详图索引';s leftCalloutAccessoryView自动移动左上角,ios,objective-c,ios8,mkannotation,mkannotationview,Ios,Objective C,Ios8,Mkannotation,Mkannotationview,它在iOS 7上运行得很好,但UIImageView在iOS 8上的位置会发生变化,如下图所示。此外,右详图索引辅助视图位置会移动右上角 有人能帮忙吗 干杯 在iOS 7中 在iOS 8中 -(无效)地图视图:(MKMapView*)地图视图未选择注释视图:(MKAnnotationView*)视图 { } -(MKAnnotationView*)地图视图:(MKMapView*)地图视图注释:(id)注释{ MKPinAnnotationView *annView=[[MKPinAnnot
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;
}我解决了
都是关于titleLabel的字符串长度。如果字符串长度超过20-25个字符,则左右附件视图向上移动
首先,我修剪了标题标签或副标题标签上显示的字符串。之后,将“…”作为字符串连接到字符串末尾
这个解决方案有点像黑客,但它很有魅力。我做了这样的修复。需要润色代码,但对我来说它是有效的
- (UIView*)rightCalloutAccessoryView {
UIButton* rightButton = [UIButton buttonWithType:UIButtonTypeDetailDisclosure];
return [self parentViewForView:rightButton];
}
- (UIView*)parentViewForView:(UIView*)view {
#ifdef __IPHONE_8_0
CGRect rr = view.frame;
rr.origin.x = 2.0f;
rr.origin.y = (64.0f - rr.size.height ) / 2.0f;
view.frame = rr;
UIView *result = [[UIView alloc] initWithFrame:CGRectMake(0, 0, rr.size.width + 4.0f, 64.0f)];
[result addSubview:view];
return result;
#else
return view;
#endif
}
如果您想自定义leftCalloutAccessoryView,则必须在iPhone 4、4S、5、5+上优化宽度低于225.0f(更好的设置是220.0f)的自定义视图 例如:
UIView *_customContentView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 38.0f)];
view.leftCalloutAccessoryView = _customContentView;
这就是我解决问题的经验。如果需要这样修复,听起来像iOS 8中的bug。
leftCalloutAccessoryView
设置了自动布局,使其左边距和上边距相同。它垂直居中,优先级为250
。但是,标签的抗压性优先级为750
。因此,如果标签必须截断,它会将左侧详图索引视图向左推,从而使其也向上移动。
UIView *_customContentView = [[UIView alloc] initWithFrame:CGRectMake(0.0f, 0.0f, 225.0f, 38.0f)];
view.leftCalloutAccessoryView = _customContentView;