于是,在 clickButton: 方法中添加下面的代码:
- (IBAction)clickButton:(id)sender
{
if (self.qrcodeImage == nil) {
if ([self.textField.text isEqualToString:@""]) {
return;
}
[self generateQRCodeImage];
[self.textField resignFirstResponder];
[self.button setTitle:@"Clear" forState:UIControlStateNormal];
}
else {
[self clearQRCodeImage];
[self.button setTitle:@"Generate" forState:UIControlStateNormal];
}
self.textField.enabled = !self.textField.enabled;
self.slider.hidden = !self.slider.hidden;
}
最后,考虑到程序启动时滑动条不应该显示(滑动条只在生成二维码时出现),还需要在 viewDidLoad 方法中设置其 hidden 属性:
- (void)viewDidLoad
{
[super viewDidLoad];
self.slider.hidden = YES;
}
可以再次运行试下。
2.3.3 缩放二维码图像
缩放显示的二维码主要是通过拖动滑动条缩放image View来完成的。在实现部分找到 changeScale: 方法,并添加代码下面的代码即可:
- (IBAction)changeScale:(id)sender
{
self.imageView.transform = CGAffineTransformMakeScale((CGFloat)self.slider.value, (CGFloat)self.slider.value);
}
需要注意的是, self.slider.value 是 float 类型,而 CGAffineTransformMakeScale 方法的参数是 CGFloat 类型,因此在上面的代码中进行了类型转换。
2.3.4 保存二维码图像
将生成的二维码图片保存到相机胶卷相册主要是使用 UIImageWriteToSavedPhotosAlbum 函数来实现的。其完整声明如下:
复制代码
void UIImageWriteToSavedPhotosAlbum(UIImage *image, id completionTarget, SEL completionSelector, void *contextInfo);
其中各参数及含义:
image :表示要保存到相册的图像。
completionTarget :可选的参数,表示图片保存后,调用完成选择器(completionSelector)的对象。
completionSelector :可选的方法,表示图片保存后,completionTarget对象要调用的方法(即回调方法)。该方法应符合以下签名:
- (void)image:(UIImage *)image
didFinishSavingWithError:(NSError *)error
contextInfo:(void *)contextInfo;
contextInfo :可选的参数,用于提供一个上下文信息以通过参数传递给completionSelector。
在这里我们的大致思路是:首先在imageView中添加单击手势,当用户点击二维码图像时会弹出一个提示框询问是否保存,如果用户点击保存按钮,那么就将二维码保存到相册中。下面是具体实现:










