Нарисуйте прямоугольник - PullRequest
       15

Нарисуйте прямоугольник

0 голосов
/ 17 сентября 2010

В моем приложении у меня есть карта, на этой карте много аннотаций ... но иногда местоположение аннотации не найдено (сервер не может найти широту / долготу). Когда это происходит, я хотел бы нарисовать на своей карте маленькую рамку с текстом «Некоторые местоположения не могут быть найдены» (или аналогичные). Я хочу, чтобы эта коробка имела закругленные углы и была прозрачной. Также, если возможно, я бы предпочел, чтобы это не влияло на функциональность карты. Под этим я подразумеваю, что если пользователь нарисует палец на карте, откуда расположено это поле, карта все равно должна переместиться.

Как я могу сделать такую ​​коробку?

Вот что я имею в виду:
alt text

С уважением,
Пол Пилен

Ответы [ 2 ]

2 голосов
/ 17 сентября 2010

Либо используйте Photoshop :), либо сделайте это с помощью CALayer.

Чтобы сделать это со слоем, создайте UIView с именем bgView с подходящим альфа-значением для вашего фона, а затем сделайте это в методе, гдеВы хотите отобразить панель предупреждений: -

CALayer *layer = bgView.layer;
layer.masksToBounds = YES;
layer.cornerRadius = 20.0; // adjust for corner effect
1 голос
/ 17 сентября 2010

Демонстрационный код: http://www.eng.utah.edu/~cs4962/programming.html

В решении для выбора цвета.(В верхней части)


+ (void) addRoundedRect:(CGRect)rect radiusPercent:(float)radiusPercent
{
    CGContextRef context = UIGraphicsGetCurrentContext();</p>

<code>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);

}

...