2010-09-17 3 views
0

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

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

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

С наилучшими пожеланиями,
Пол Peelen

ответ

2

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

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

CALayer *layer = bgView.layer; 
layer.masksToBounds = YES; 
layer.cornerRadius = 20.0; // adjust for corner effect 
+0

Ваше решение работал идеально подходит для меня. Легкий и маленький код! Thnx! –

1

Eсть демо-код: 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);

}

+0

Хорошо, скоро попробуем. Как я могу убедиться, что он не реагирует на нажатие. Иными словами, это «прессу»? Или это невозможно? –

+0

не уверен. Вы можете отправить электронное письмо Мэтту по адресу http://www.uofuiphone.com, поскольку он тот, кто сделал пример кода. – Brad

Смежные вопросы