Estoy construyendo un UITableView personalizado con cada una de las celdas que contienen una pieza de texto y un MKMapView. Quiero que la vista de "icono" del mapa en la celda tenga esquinas redondeadas y esto parece ser un problema.Esquinas redondeadas de MKMapView
Estoy usando un dibujo personalizado tanto para mi UITableViewCell como para mi MapIcon
(vista de mapa personalizada) que agrego a mi UITableViewCell.
MapIcon
es una subclase de MKMapView
y el método de dibujo se ve de la siguiente manera:
- (void) drawRect: (CGRect) rect {
CGContextRef context = UIGraphicsGetCurrentContext(); CGContextSetLineWidth(context, strokeWidth); CGContextSetStrokeColorWithColor(context,self.strokeColor.CGColor); CGContextSetFillColorWithColor(context, self.rectColor.CGColor); CGFloat radius = arcRadius; CGFloat Xmin = CGRectGetMinX(rect); CGFloat Xmid = CGRectGetMidX(rect); CGFloat Xmax = CGRectGetMaxX(rect); CGFloat Ymin = CGRectGetMinY(rect); CGFloat Ymid = CGRectGetMidY(rect); CGFloat Ymax = CGRectGetMaxY(rect);
CGContextBeginPath (contexto); CGContextMoveToPoint (context, Xmin, Ymid); CGContextAddArcToPoint (contexto, Xmin, Ymin, Xmid, Ymin, radio); CGContextAddArcToPoint (contexto, Xmax, Ymin, Xmax, Ymid, radio); CGContextAddArcToPoint (contexto, Xmax, Ymax, Xmid, Ymax, radio); CGContextAddArcToPoint (contexto, Xmin, Ymax, Xmin, Ymid, radio); CGContextClosePath (contexto);
CGContextDrawPath(context, kCGPathFillStroke);
CGContextClip (context); CGContextEndTransparencyLayer (contexto); }
Y los mapas no reciben las esquinas rouned, como se puede ver en la siguiente imagen:
alt text http://img190.imageshack.us/img190/948/picture1vmk.png
Sin embargo, si puedo cambiar el MapIcon
subclase de UIView y utilizar el mismo métodos de dibujo personalizado, la vista se recorta a la perfección, por debajo de la imagen:
alt text http://img503.imageshack.us/img503/6269/picture2xkq.png
¿Está mal para mí subclasificar MKMapView de tal manera y esperar que se clip? ¿Alguna otra de redondear estas esquinas?
Saludos, Kaspa
¿Ha encontrado que poner un MapView aquí se bloquea cuando sale y re-enteres la vista? –