Se unió el crash cerebrovascular de UIBezierPath en su set

Al ser un principiante en el dibujo de iOS, quise dibujar un pequeño contenedor con información sobre herramientas que consiste en un rectángulo con una flecha indicadora. Creé 2 UIBezierPaths y los uní con "appendPath". Pensé que era la forma correcta de hacerlo, pero después de luchar por 1 día, tuve que pedir ayuda. Aquí está la captura de pantalla de dónde estoy ahora mismo:

Captura de pantalla de UIBezierPath

Como puede ver, el problema es simplemente que cuando bash acariciar la ruta unificada, no se acaricia en general, sino como piezas separadas. ¿Quizás alguien podría apuntarme en la dirección correcta para resolver esto?

Aquí está el código:

// Only override drawRect: if you perform custom drawing. // An empty implementation adversely affects performance during animation. - (void)drawRect:(CGRect)rect { // create indicator path UIBezierPath *indicator = [[UIBezierPath alloc] init]; // corner radius CGFloat radius = self.cornerRadius; // main path UIBezierPath *path; // format frame rect = CGRectMake(rect.origin.x, rect.origin.y, rect.size.width, rect.size.height - self.indicatorSize.height); // assign path path = [UIBezierPath bezierPathWithRoundedRect: rect byRoundingCorners:UIRectCornerAllCorners cornerRadii:CGSizeMake(radius, radius)]; // x point CGFloat x = (rect.size.width - self.indicatorSize.width) / 2; [indicator moveToPoint:CGPointMake(x, rect.size.height)]; [indicator addLineToPoint:CGPointMake(x + self.indicatorSize.width / 2, rect.size.height + self.indicatorSize.height)]; [indicator addLineToPoint:CGPointMake(x + self.indicatorSize.width, rect.size.height)]; // close path [indicator closePath]; // append indicator to main path [path appendPath:indicator]; [[UIColor networkingColor] setStroke]; [path setLineWidth:2.0]; [path stroke]; [self.fillColor setFill]; [path fill]; // release indicator [indicator release]; } 

Gracias por adelantado

Debes dibujarlo todo como una ruta, porque en el momento en que lo estás diciendo quieres dibujar un rectángulo integer, y luego un triángulo, y eso es lo que está haciendo.

De la documentation de Apple UIBezierPath:

[appendPath:] agrega los commands utilizados para crear la ruta en bezierPath al final de la ruta del receptor. Este método no intenta explícitamente conectar los subpaths en los dos objects, aunque las operaciones en bezierPath podrían causar ese efecto.

Entonces primero dibujará su rectángulo, y luego dibujará su triángulo sin intentar unirlos