在我的应用程序中我有一张地图,这张地图有很多注释......但有时没有找到注释的位置(服务器找不到lat / lon)。当发生这种情况时,我想在地图上画一个小方框,上面写着“找不到某些位置”(或类似)。我希望这个盒子有圆角并且是透明的。此外,如果可能,我希望如果这不影响地图的功能。我的意思是,如果用户从该框所在的地图上绘制手指,地图仍应移动。
我怎样才能制作这样的盒子?
这就是我的意思:
最好的问候,
保罗佩伦
答案 0 :(得分:2)
要么使用Photoshop :),要么使用CALayer。
要使用图层创建一个名为bgView的UIView,并为您的背景创建适当的Alpha值,然后在要显示警报面板的方法中执行此操作: -
CALayer *layer = bgView.layer;
layer.masksToBounds = YES;
layer.cornerRadius = 20.0; // adjust for corner effect
答案 1 :(得分:1)
有一些演示代码:http://www.eng.utah.edu/~cs4962/programming.html
在颜色选择器的解决方案中。 (在上半部分)
+ (void) addRoundedRect:(CGRect)rect radiusPercent:(float)radiusPercent
{
CGContextRef context = UIGraphicsGetCurrentContext();
CGFloat radius = fminf(rect.size.width, rect.size.height) * radiusPercent;
CGFloat minX = CGRectGetMinX(rect);
CGFloat midX = CGRectGetMidX(rect);
CGFloat maxX = CGRectGetMaxX(rect);
CGFloat minY = CGRectGetMinY(rect);
CGFloat midY = CGRectGetMidY(rect);
CGFloat maxY = CGRectGetMaxY(rect);
CGContextMoveToPoint(context, minX, midY);
CGContextAddArcToPoint(context, minX, minY, midX, minY, radius);
CGContextAddArcToPoint(context, maxX, minY, maxX, midY, radius);
CGContextAddArcToPoint(context, maxX, maxY, midX, maxY, radius);
CGContextAddArcToPoint(context, minX, maxY, minX, midY, radius);
CGContextClosePath(context);
CGFloat radius = fminf(rect.size.width, rect.size.height) * radiusPercent;
CGFloat minX = CGRectGetMinX(rect);
CGFloat midX = CGRectGetMidX(rect);
CGFloat maxX = CGRectGetMaxX(rect);
CGFloat minY = CGRectGetMinY(rect);
CGFloat midY = CGRectGetMidY(rect);
CGFloat maxY = CGRectGetMaxY(rect);
CGContextMoveToPoint(context, minX, midY);
CGContextAddArcToPoint(context, minX, minY, midX, minY, radius);
CGContextAddArcToPoint(context, maxX, minY, maxX, midY, radius);
CGContextAddArcToPoint(context, maxX, maxY, midX, maxY, radius);
CGContextAddArcToPoint(context, minX, maxY, minX, midY, radius);
CGContextClosePath(context);
}