Objective c 如何在UIView上绘制签名

Objective c 如何在UIView上绘制签名,objective-c,uiview,uibezierpath,Objective C,Uiview,Uibezierpath,我是ios新手。我需要创建一个可以签名的文本视图或标签 如下图所示。您可以在UIView上为第一个子类UIView绘制签名,您的UIView子类应该是 SignatureView *signView= [[ SignatureView alloc] initWithFrame: CGRectMake(10, 10, self.view.frame.size.width-40, 200)]; [signView setBackgroundColor:[UIColor whiteColor]]

我是ios新手。我需要创建一个可以签名的文本视图或标签

如下图所示。

您可以在UIView上为第一个子类UIView绘制签名,您的UIView子类应该是

   SignatureView *signView= [[ SignatureView alloc] initWithFrame: CGRectMake(10, 10, self.view.frame.size.width-40, 200)];
[signView setBackgroundColor:[UIColor whiteColor]];
signView.layer.borderColor = [[UIColor lightGrayColor]CGColor];
signView.layer.borderWidth = 1.0;
[self.view addSubview:signView];
SignatureView.h

然后您可以在任何视图控制器中导入SignatureView.h,并可以实例化签名视图,如

   SignatureView *signView= [[ SignatureView alloc] initWithFrame: CGRectMake(10, 10, self.view.frame.size.width-40, 200)];
[signView setBackgroundColor:[UIColor whiteColor]];
signView.layer.borderColor = [[UIColor lightGrayColor]CGColor];
signView.layer.borderWidth = 1.0;
[self.view addSubview:signView];
在这个视图上你可以画你的签名

您可以调用擦除方法来擦除签名

您可以在UIView上为第一个子类UIView绘制签名,您的UIView子类应该是

   SignatureView *signView= [[ SignatureView alloc] initWithFrame: CGRectMake(10, 10, self.view.frame.size.width-40, 200)];
[signView setBackgroundColor:[UIColor whiteColor]];
signView.layer.borderColor = [[UIColor lightGrayColor]CGColor];
signView.layer.borderWidth = 1.0;
[self.view addSubview:signView];
SignatureView.h

然后您可以在任何视图控制器中导入SignatureView.h,并可以实例化签名视图,如

   SignatureView *signView= [[ SignatureView alloc] initWithFrame: CGRectMake(10, 10, self.view.frame.size.width-40, 200)];
[signView setBackgroundColor:[UIColor whiteColor]];
signView.layer.borderColor = [[UIColor lightGrayColor]CGColor];
signView.layer.borderWidth = 1.0;
[self.view addSubview:signView];
在这个视图上你可以画你的签名

您可以调用擦除方法来擦除签名

这是我的解决方案

首先,我创建了SignatureDrawView类。在SignatureDrawView类的旁边,我编写了绘制签名的函数

SignatureDrawView.h

#import <UIKit/UIKit.h>

@interface SignatureDrawView : UIView

@property (nonatomic, retain) UIGestureRecognizer *theSwipeGesture;
@property (nonatomic, retain) UIImageView *drawImage;
@property (nonatomic, assign) CGPoint lastPoint;
@property (nonatomic, assign) BOOL mouseSwiped;
@property (nonatomic, assign) NSInteger mouseMoved;

- (void)erase;
- (void)setSignature:(NSData *)theLastData;
- (BOOL)isSignatureWrite;

@end
接下来在ViewController中,我使用UIView创建了UIImageView

ViewController.h

#import <UIKit/UIKit.h>
#import "SignatureDrawView.h"

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet SignatureDrawView *drawSignView;

@end
注意:在xib中设置视图时,第一个标识检查器将保留 >侧边。然后单击classit的下拉框是的一部分 自定义类。选择或选择SignatureDrawView。连接之后 从xib或故事板到ViewController.h的视图

#import <UIKit/UIKit.h>
#import "SignatureDrawView.h"

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet SignatureDrawView *drawSignView;

@end
下面是输出屏幕截图

这是我的解决办法

首先,我创建了SignatureDrawView类。在SignatureDrawView类的旁边,我编写了绘制签名的函数

SignatureDrawView.h

#import <UIKit/UIKit.h>

@interface SignatureDrawView : UIView

@property (nonatomic, retain) UIGestureRecognizer *theSwipeGesture;
@property (nonatomic, retain) UIImageView *drawImage;
@property (nonatomic, assign) CGPoint lastPoint;
@property (nonatomic, assign) BOOL mouseSwiped;
@property (nonatomic, assign) NSInteger mouseMoved;

- (void)erase;
- (void)setSignature:(NSData *)theLastData;
- (BOOL)isSignatureWrite;

@end
接下来在ViewController中,我使用UIView创建了UIImageView

ViewController.h

#import <UIKit/UIKit.h>
#import "SignatureDrawView.h"

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet SignatureDrawView *drawSignView;

@end
注意:在xib中设置视图时,第一个标识检查器将保留 >侧边。然后单击classit的下拉框是的一部分 自定义类。选择或选择SignatureDrawView。连接之后 从xib或故事板到ViewController.h的视图

#import <UIKit/UIKit.h>
#import "SignatureDrawView.h"

@interface ViewController : UIViewController
@property (strong, nonatomic) IBOutlet SignatureDrawView *drawSignView;

@end
下面是输出屏幕截图


? ?IS SignatureView是一个类别。它工作完美,谢谢。你能告诉我如何保存和清除它吗?要清除,你可以调用擦除方法。为了保存,您可以通过UIGraphicsBeginImageContext和UIGraphicsGetImageFromCurrentImageContext从视图中获取图像。请参阅,您需要使用SignatureView的当前实例调用erase方法,在该实例上绘制签名并要擦除@Lion我尝试过这段代码,但每次运行它时,我都会收到excessBadAccess-[\uu NSCFType moveToPoint:]:发送到实例的无法识别的选择器。你知道我可能遗漏了什么吗?SignatureView是一个类别。它工作得很好,谢谢。你能告诉我如何保存和清除它吗?要清除,你可以调用擦除方法。为了保存,您可以通过UIGraphicsBeginImageContext和UIGraphicsGetImageFromCurrentImageContext从视图中获取图像。请参阅,您需要使用SignatureView的当前实例调用erase方法,在该实例上绘制签名并要擦除@Lion我尝试过这段代码,但每次运行它时,我都会收到excessBadAccess-[\uu NSCFType moveToPoint:]:发送到实例的无法识别的选择器。你知道我可能遗漏了什么吗?欢迎Muju-:如果我的答案比第一个答案好并且对你有好处,请接受。谢谢。Obj-C材料越来越难找到:-欢迎Muju-:如果我的答案比第一个答案好,并且对您有好处,请接受。谢谢。Obj-C材料越来越难找到:-