Standby Tune

Android,iOSのアプリ開発について発見した事、感じた事をまとめます

UIViewの枠外に矢印を表示させる

UIViewに図形を描画する方法はいろんな方がまとめて下さり、安易に実装することができるけれども、 枠外に描画するサンプルが見当たらなかったので作ってみた。

こんなかんじ

f:id:SatoshiN21:20150417183834p:plain

やっていることは鼻くそほじるぐらい簡単で、 単にCALayerを作ってPathで矢印を描画し、矢印を表示させたいViewにaddしているだけ。

// インジケータをドローイング
- (void)drawIndicator:(CGContextRef)ctx
{
    CGContextBeginPath(ctx);
    
    if (self.direction == IndicatorDirectionRight) {
        CGContextMoveToPoint(ctx, 0, 0);
        CGContextAddLineToPoint(ctx, 1, 0.5);
        CGContextAddLineToPoint(ctx, 0.0, 1.0);
        CGContextAddLineToPoint(ctx, 0.0, 0.0);
    } else {
        CGContextMoveToPoint(ctx, 1.0, 0);
        CGContextAddLineToPoint(ctx, 0, 0.5);
        CGContextAddLineToPoint(ctx, 1.0, 1.0);
        CGContextAddLineToPoint(ctx, 1.0, 0.0);
    }
    
    CGContextClosePath(ctx);
    
    CGContextSetFillColorWithColor(ctx, self.indicatorColor.CGColor);
    CGContextFillPath(ctx);
}

- (void)drawInContext:(CGContextRef)ctx
{
    // 座標変換
    CGContextTranslateCTM(ctx, 0, 0);
    CGContextScaleCTM(ctx, self.bounds.size.width, self.bounds.size.height);
    [self drawIndicator:ctx];
}

今後使うことあるかな・・・

github.com