非常に単純な(うまくいけば非常に単純な)質問があります。Objective-C では、どのように 2 点間に線を引き、それを UIView に追加しますか? UIImageView を使用してそのTransform
プロパティを操作しようとしましたが、次のコードを使用すると、線が正方形または長方形に変わります。
[[self tline] setFrame:CGRectMake(start.x, start.y, width, 5)];
[[self tline] setTransform:CGAffineTransformMakeRotation(angle)];
私は 2 つの CGPoints と を持っておりstart
、end
2 つの点の間に動的な 5px の線を描画し、それをサブビューに追加したいと考えています。
黒:
ポイントstart
は、ユーザーが画面に触れ始めるポイントであり、ポイントend
はユーザーの指が現在あるポイントです。明らかに、これはゲームプレイ中に大きく動きます。これらの 2 点を結ぶには、この線を移動できる必要があります。
メソッドを使用してtouchesBegan:, Moved:, and Ended:
、ラインを作成、移動、および破棄しています。
コアグラフィックス
次のコードがあります。この行を に追加するにはどうすればよいself.view
ですか?
CGContextRef c = UIGraphicsGetCurrentContext();
CGFloat color[4] = {1.0f, 1.0f, 1.0f, 0.6f};
CGContextSetStrokeColor(c, color);
CGContextBeginPath(c);
CGContextMoveToPoint(c, start.x, start.y);
CGContextAddLineToPoint(c, end.x, end.y);
CGContextSetLineWidth(c, 5);
CGContextSetLineCap(c, kCGLineCapRound);
CGContextStrokePath(c);
カスタム UIView:
#import <UIKit/UIKit.h>
@interface DrawingView : UIView
@property (nonatomic) CGPoint start;
@property (nonatomic) CGPoint end;
- (void)drawRect:(CGRect)rect;
@end
#import "DrawingView.h"
@implementation DrawingView
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
// Initialization code
}
return self;
}
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
CGContextSetLineCap(context, kCGLineCapSquare);
CGContextSetStrokeColorWithColor(context, [UIColor whiteColor].CGColor); //change color here
CGFloat lineWidth = 5.0; //change line width here
CGContextSetLineWidth(context, lineWidth);
CGPoint startPoint = [self start];
CGPoint endPoint = [self end];
CGContextMoveToPoint(context, startPoint.x + lineWidth/2, startPoint.y + lineWidth/2);
CGContextAddLineToPoint(context, endPoint.x + lineWidth/2, endPoint.y + lineWidth/2);
CGContextStrokePath(context);
CGContextRestoreGState(context);
NSLog(@"%f",_end.x);
}
- (void)setEnd:(CGPoint)end
{
_end = end;
[self setNeedsDisplay];
}
@end
drawRect: ビューを初期化するときにのみ呼び出されます...
UIViewController の Draw メソッド:
- (void)drawTLine:(CGPoint)start withEndPoint:(CGPoint)end
{
[[self dview] setStart:start];
[[self dview] setEnd:end];
[[self dview] drawRect:[self dview].frame];
}
これは、描画ビューを追加する方法です。
DrawingView* dview = [[DrawingView alloc] initWithFrame:self.view.frame];
[dview setBackgroundColor:[UIColor clearColor]];
[self.view addSubview:dview];