iOS 描画の初心者である私は、インジケーターの矢印が付いた四角形で構成される小さなツールチップ コンテナーを描画したいと考えていました。2 つの UIBezierPath を作成し、「appendPath」で結合しました。これが正しい方法だと思いましたが、1日苦労した後、助けを求めなければなりませんでした。ここに私が今いる場所のスクリーンショットがあります:
ご覧のとおり、問題は単純に、結合されたパスをストロークしようとすると、全体としてストロークされるのではなく、別々の部分としてストロークされることです。多分誰かがこれを解決するために正しい方向に私を向けることができますか?
コードは次のとおりです。
// 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 redColor] setStroke];
[path setLineWidth:2.0];
[path stroke];
[self.fillColor setFill];
[path fill];
// release indicator
[indicator release];
}
前もって感謝します