iPhoneの画面上に線で署名を描画するには?
-
22-08-2019 - |
質問
私は、ユーザーがiPhoneの画面上で署名を描くようにしたいので、私はUIViewのサブクラスを追加し、その「touchesMoved」メソッドにコードを追加します。
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event
{
UITouch *touch = [touches anyObject];
firstTouch = [touch locationInView:self];
CGSize mySize = CGSizeMake(5, 5);
UIGraphicsBeginImageContext(mySize);
CGContextRef ctx = UIGraphicsGetCurrentContext();
CGContextBeginPath(ctx);
CGContextSetRGBFillColor(ctx, 1, 0, 0, 1);
CGContextAddRect(ctx, CGRectMake(0, 0, 5, 5));
CGContextFillPath(ctx);
UIImage *redRect = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
UIImageView *redRectView = [[UIImageView alloc] initWithImage:redRect];
redRectView.center = CGPointMake(firstTouch.x, firstTouch.y);
[self addSubview:redRectView];
}
私は小さな長方形でそれを描くことだし、それはドットでドットであることが判明しました。それはあまりにも醜いあるので、私は線で署名を描きたいです。しかし、どのようにfirstTouchとlastTouchを区別するために?私は「touchesMoved」メソッドを使用している場合は、私が唯一のタッチポイントを取得することができます。
解決
<のhref = "http://developer.apple.com/iphone/library/documentation/UIKit/Reference/UIResponder_Class/Reference/Reference.html#//apple_ref/occ/instm/UIResponder/" を1として= "nofollowをnoreferrer" REL> UIResponderクラスリファレンスに、あなたも
を実装する必要があります
– touchesBegan:withEvent:
と
– touchesEnded:withEvent:
。
あなたはこれらのメソッドを実装した後、あなたがパス・ベジェ曲線または他の適切なソリューションを実装するのに十分なデータを得ることができる必要があります。
[編集]、おそらくよりよい解決策コントローラが
を受信するとUIEvent
オブジェクトから直接接触を得るためにすべきだろう
– touchesMoved:withEvent:
通知。また、 GLPaintサンプルコードはにも役立つことを証明します。
他のヒント
、私はこれを見つけますチュートリアルに。ほとんどの初心者のために学ぶことは簡単です。
1の指で書かれた署名は筆記具で書かれたものとは異なることになるだろうことを覚えておいてください。あなたは、あなたが署名を使用しているものを再と思うし、それはあなたがそれをする必要がありますよう結合のかどうかにしたいことがあります。