【问题标题】:How to check UIView is nil or not in objective c如何在目标 c 中检查 UIView 是否为零
【发布时间】:2017-01-07 06:11:36
【问题描述】:

我是 iOS 新手,在验证视图方面遇到问题。我创建了类似签名的视图 How to draw Signature on UIView,现在我想使用此代码进行验证

-(IBAction)SavebtnClick:(id)sender
{

    if(drawSignView==nil)
    {
       UIAlertView *alertviewshow =[[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Pease Sign" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [alertviewshow show];
    }
    else if (drawSignViewClient==nil)
    {
        UIAlertView *alertviewshow =[[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Please Sign" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [alertviewshow show];
    }
    else
    {

        viewcontroller1 *management =[[viewcontroller1 alloc] initWithNibName:@"viewcontroller1" bundle:nil];
        [self.navigationController pushViewController:management animated:YES];
    }
}

但我没有成功。请告诉我我做错了什么。

我想做验证。

如果我没有签名,它会显示消息。

请给我建议。

提前致谢!

我保存图片和使用条件

UIGraphicsBeginImageContext(self.drawSignView.bounds.size);
    [[self.drawSignView.layer presentationLayer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();
    // NSData *postData = UIImageJPEGRepresentation(viewImage, 1.0);


    // Store the data
    NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];


    NSData *imageData = UIImageJPEGRepresentation(viewImage, 100);
    [defaults setObject:imageData forKey:@"image"];

    [defaults synchronize];


    if(viewImage==nil)
    {
        UIAlertView *alertviewshow =[[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Pease Sign" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [alertviewshow setTag:1];
        [alertviewshow show];
    }

但它不起作用,因为它包含空白图像。

【问题讨论】:

  • 你能再显示一些代码吗?这段代码有什么问题?你想做什么,明确说明。
  • 请对此进行更多解释...
  • 这个 Signatureview 是一个实例吗?
  • 实际错误是什么?
  • @PiyushPatel 如果签名视图为零,我想进行验证,然后显示弹出请签名。

标签: ios objective-c uiview


【解决方案1】:
 UIGraphicsBeginImageContextWithOptions(self.drawSignView.bounds.size, NO, [UIScreen   mainScreen].scale);

 [self.drawSignView drawViewHierarchyInRect:self.drawSignView.bounds afterScreenUpdates:YES];
 UIImage *signImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

if(signImage)
  {
    //Get Image from sign view Succesfully
  }
 else
 {
   UIAlertView *alertviewshow =[[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Please Sign" delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
    [alertviewshow show];
 }

试试这个代码,它肯定可以工作。

【讨论】:

  • [self.drawSignView drawViewHierarchyInRect:self.drawSignView.bounds afterScreenUpdates:YES];
【解决方案2】:

为此,我的建议是检查UIImage 而不是UIView,这意味着您是否获得签名图像。然后你应该检查像

if(singatureImage1 == nil){
}
else{
}

还有另一个签名

if(singatureImage2 == nil)
{

}
else{
}

如果您在没有签名的情况下没有得到 nil 图像,请使用SinatureView,如果您没有签名,它将为您提供 nil 图像,然后您可以验证它。

如果您检查UIView(即您的签名视图)是否为零,您将始终获得非零视图,因为您已经对其进行了初始化。

【讨论】:

  • @piysuhPatel 是的,我正在获取签名图像。
  • 不签名你会得到签名图像吗?
  • 是的,没有签名我也得到白色图像。
  • 然后使用github.com/asifalikhokhar/TESignatureView。它不会返回空白图像
【解决方案3】:

请检查这个答案

    UIGraphicsBeginImageContext(self.drawSignView.bounds.size);
    [[self.drawSignView.layer presentationLayer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImage = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    // NSData *postData = UIImageJPEGRepresentation(viewImage, 1.0);

    NSData *imgData = [[NSData alloc] initWithData:UIImageJPEGRepresentation((viewImage), 0.5)];
    int imageSize   = imgData.length;
    NSLog(@"size of image in KB: %d ", imageSize/1024);



    UIGraphicsBeginImageContext(self.drawSignViewClient.bounds.size);
    [[self.drawSignViewClient.layer presentationLayer] renderInContext:UIGraphicsGetCurrentContext()];
    UIImage *viewImageClient = UIGraphicsGetImageFromCurrentImageContext();
    UIGraphicsEndImageContext();

    // NSData *postData = UIImageJPEGRepresentation(viewImage, 1.0);

    NSData *imgDataClient = [[NSData alloc] initWithData:UIImageJPEGRepresentation((viewImageClient), 0.5)];
    int imageSizeClient   = imgDataClient.length;
    NSLog(@"size of image in KB: %d ", imageSizeClient/1024);

    int OCS=imageSize/1024;
    int Client=imageSizeClient/1024;

    if(OCS<3)
    {
        alertviewshow=[[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Please do Signature " delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [alertviewshow setTag:1];
        [alertviewshow show];
    }
    else if (Client<3)
    {
        alertviewshow=[[UIAlertView alloc] initWithTitle:@"Warning!" message:@"Please do Signature " delegate:self cancelButtonTitle:nil otherButtonTitles:@"OK", nil];
        [alertviewshow setTag:1];
        [alertviewshow show];
    }
else
{
//Write Your Code....
}

【讨论】:

    猜你喜欢
    • 2016-04-05
    • 1970-01-01
    • 2011-04-13
    • 2014-06-24
    • 1970-01-01
    • 2018-07-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多