スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
このエントリーをはてなブックマークに追加

[iOS]UIViewに線を引く

UIView(を継承する全てのクラス)に対して、CALayerを利用して下線を引きます。
デフォルトでは、UIViewに右下がりの白い斜線が表示されます。
必要に応じて、drawInContext内を変更して利用してください。

表示すると次のようになります。(IB上でDrawLineクラスを指定し、背景色を黒で指定しています)
[iOS]UIViewに線を引く_1[iOS]UIViewに線を引く_2[iOS]UIViewに線を引く_3[iOS]UIViewに線を引く_4

変更によって下線を引いたり、一部にだけ枠を付けることが可能です。
※使用前にQuartzCore.frameworkをプロジェクトに入れてください。
[iOS]UIViewに線を引く_5

//次をコードに追加します
#import <QuartzCore/QuartzCore.h>

@interface LineLayer : CALayer
@end
@implementation LineLayer
- (void)drawInContext:(CGContextRef)ctx
{
CGMutablePathRef path = CGPathCreateMutable();
//配列で、描画する点を指定します。 指定した点同士をつなぐように直線を描きます。
CGPoint points[] = {
CGPointMake(0, 0),
CGPointMake(self.bounds.size.width, self.bounds.size.height),
};
NSLog(@"%@",NSStringFromCGRect(self.bounds));
//点の数を数えます。(配列の要素数をカウント)
int numPoints = sizeof(points)/sizeof(points[0]);
//点と点の数を指定して直線を描写します。
CGPathAddLines(path, NULL, points, numPoints);

CGContextAddPath(ctx, path);
CGPathRelease(path);
//線の色を設定
UIColor *lineColor = [UIColor colorWithWhite:1.0 alpha:1.0];
CGContextSetStrokeColorWithColor(ctx, lineColor.CGColor);
CGContextSetLineWidth(ctx, 5.0);
CGContextDrawPath(ctx, kCGPathStroke);
}
@end


//利用例
//新規追加したUIViewを継承したファイルに上記を追加した場合
@implementation DrawLine
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
//どちらかで背景を透明にする
// self.opaque = NO;
self.backgroundColor = [UIColor clearColor];
}
return self;
}

- (void)drawRect:(CGRect)rect
{
//読み込み時に、_setupを呼び出します。
[self _setup];
}

- (void)_setup
{
//レイヤーを生成します
LineLayer *lineLayer = [LineLayer layer];
//サイズを指定します
lineLayer.frame = CGRectInset(self.bounds,0.0,0.0);
NSLog(@"%@",NSStringFromCGRect(self.bounds));
NSLog(@"%@",NSStringFromCGRect(self.frame));
//自信のレイヤーのサブレイヤーとして追加します。
[self.layer addSublayer:lineLayer];
[lineLayer setNeedsDisplay];
}

@end
このエントリーをはてなブックマークに追加

tag : iOS calayer 下線 描画 uiview

コメントの投稿

非公開コメント

Translation


上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。
プロフィール

チーズくん

Author:チーズくん
個人的メモをただ羅列しています。
twitter:@cheese1038

バロメーター
最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。