テーブルビューのセルに線を引き、テキストフィールドとスイッチを1つのセルに配置できるようにします。セルの高さを上げました。セルに線を引くにはどうすればよいですか?
次のコードを含むUIViewのサブクラスがあります
//Get the CGContext from this view
CGContextRef context = UIGraphicsGetCurrentContext();
//Set the stroke (pen) color
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
//Set the width of the pen mark
CGContextSetLineWidth(context, 1.0);
// Draw a line
//Start at this point
CGContextMoveToPoint(context, 10.0, 30.0);
//Give instructions to the CGContext
//(move "pen" around the screen)
CGContextAddLineToPoint(context, 310.0, 30.0);
//Draw it
CGContextStrokePath(context);
次に、グループ化されたテーブルスタイルのtableViewControllerがあります。 cellForRowAtIndexPathに次のコードがあります
//code to add textfield
DrawLineView *drawLine = [[DrawLineView alloc]init];
[cell addSubview:drawLine];
//code add switch
しかし、それは線を引いていません。 2つの異なるセルを使用できません。私は私を助けてください。これは私がiphoneのグラフィックスを扱う最初の人です。ありがとう
2つのこと...まず、通常、セル自体に引き込むことはありません。
通常、コンテンツビューに描画します。セルのbackgroundViewまたはselectedBackgroundViewに描画することが理にかなっている場合があります。
[cell.contentView addSubview:drawLine];
次に、デフォルトのセルテキストラベルcell.textLabelとcell.detailTextLabelの背景は不透明です。背景色を[UIColor clearColor]
に設定してみてください。
編集:もう1つ:drawLineに適切なフレームを設定する必要があります
DrawLineView *drawLine = [[DrawLineView alloc]initWithFrame:cell.contentView.bounds];
線を引くだけの場合は、CAShapeLayerを使用してパスを線で渡し、それをセルコンテンツビューのサブレイヤーとしてアタッチすることをお勧めします。テーブルは、カスタムdrawRectでビューを使用するよりもパフォーマンスが優れているはずです。
CALayerとパスを介して線を描画する例:
// You'll also need the QuartzCore framework added to the project
#import <QuartzCore/QuartzCore.h>
CAShapeLayer *lineShape = nil;
CGMutablePathRef linePath = nil;
linePath = CGPathCreateMutable();
lineShape = [CAShapeLayer layer];
lineShape.lineWidth = 4.0f;
lineShape.lineCap = kCALineCapRound;;
lineShape.strokeColor = [[UIColor blackColor] CGColor];
int x = 0; int y = 0;
int toX = 30; int toY = 40;
CGPathMoveToPoint(linePath, NULL, x, y);
CGPathAddLineToPoint(linePath, NULL, toX, toY);
lineShape.path = linePath;
CGPathRelease(linePath);
[self.layer addSublayer:lineShape];
線を描く非常に簡単な方法は、UIViewを作成して希望の色で塗りつぶし、それに応じて幅を選択し、高さを次のように1ピクセルに設定することだと思います。
var lineView : UIView = {
let view = UIView()
view.backgroundColor = UIColor.blackColor()
view.translatesAutoresizingMaskIntoConstraints = false
return view
}()
self.view.addSubview(lineView)
self.view.addConstraints(NSLayoutConstraint.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("H:|[view]|", options: NSLayoutFormatOptions(), metrics: nil, views: ["view": lineView])))
self.view.addConstraints(NSLayoutConstraint.addConstraints(NSLayoutConstraint.constraintsWithVisualFormat("V:|-50-[view(1)]", options: NSLayoutFormatOptions(), metrics: nil, views: ["view": lineView])))