Ios 为什么在滑块中剪切后图像模糊?
我正在使用这段代码为我的滑块为UISlider裁剪图像,当我拖动滑块时,图像正在模糊,怎么能不模糊又不丢失清晰度呢Ios 为什么在滑块中剪切后图像模糊?,ios,objective-c,uiimage,cgimage,cgimageref,Ios,Objective C,Uiimage,Cgimage,Cgimageref,我正在使用这段代码为我的滑块为UISlider裁剪图像,当我拖动滑块时,图像正在模糊,怎么能不模糊又不丢失清晰度呢 - (UIImage *) revealedTrackImageForCurrentValues { //Get left and right x positions float lowerHandleWidth = _lowerHandleHidden ? 2.0f : _lowerHandle.frame.size.width; float upperH
- (UIImage *) revealedTrackImageForCurrentValues {
//Get left and right x positions
float lowerHandleWidth = _lowerHandleHidden ? 2.0f : _lowerHandle.frame.size.width;
float upperHandleWidth = _upperHandleHidden ? 2.0f : _upperHandle.frame.size.width;
float xLowerValue = ((self.bounds.size.width - lowerHandleWidth) * (_lowerValue - _minimumValue) / (_maximumValue - _minimumValue))+(lowerHandleWidth/2.0f);
float xUpperValue = ((self.bounds.size.width - upperHandleWidth) * (_upperValue - _minimumValue) / (_maximumValue - _minimumValue))+(upperHandleWidth/2.0f);
//Crop the image
CGRect croppedImageRect = CGRectMake(xLowerValue, 0.0f, xUpperValue - xLowerValue, self.trackImage.size.height);
CGImageRef croppedImageRef = CGImageCreateWithImageInRect([self.trackImage CGImage], croppedImageRect);
UIImage *croppedImage = [UIImage imageWithCGImage:croppedImageRef];
CGImageRelease(croppedImageRef);
return croppedImage;
}
如何在不丢失图像清晰度的情况下执行此操作???编辑的代码:
您必须将UIImage子类化:
UIImageView+裁剪.h
然后调用您的代码:
#import "UIImage+Cropping.h"
- (UIImage *)revealedTrackImageForCurrentValues
{
//Get left and right x positions
float lowerHandleWidth = _lowerHandleHidden ? 2.0f : _lowerHandle.frame.size.width;
float upperHandleWidth = _upperHandleHidden ? 2.0f : _upperHandle.frame.size.width;
float xLowerValue = ((self.bounds.size.width - lowerHandleWidth) * (_lowerValue - _minimumValue) / (_maximumValue - _minimumValue))+(lowerHandleWidth/2.0f);
float xUpperValue = ((self.bounds.size.width - upperHandleWidth) * (_upperValue - _minimumValue) / (_maximumValue - _minimumValue))+(upperHandleWidth/2.0f);
// Get rect
CGRect croppedImageRect = CGRectMake(xLowerValue, 0.0f, xUpperValue - xLowerValue, self.trackImage.size.height);
//Get cropped image
UIImage *croppedImage = [self.trackImage revealedTrackImageForRect: croppedImageRect];
return croppedImage;
}
它给出了这一行的错误[self-drawAtPoint:CGPointMake(-cropeImage.origin.x,-cropeImage.origin.y)];我做什么???@MayankPatel请检查更新的代码。它是动态编写的,但应该可以工作UIImage*croppedImage=[self.trackImage revealedTrackImageForRect:croppedImageRect],,,它给我在这行错误没有界面界面声明我刚刚测试过,它的工作非常好,为我。我不知道你是在哪里出错的。从这里很难说,让我们来。
#import "UIImage+Cropping.h"
@implementation UIImage (Cropping)
- (UIImage *)revealedTrackImageForRect:(CGRect)croppedImageRect
{
//create drawing context
UIGraphicsBeginImageContextWithOptions(croppedImageRect.size, NO, 0.0f);
//draw
[self drawAtPoint:CGPointMake(-croppedImageRect.origin.x, -croppedImageRect.origin.y)];
//capture resultant image
UIImage *image = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
//return image
return image;
}
@end
#import "UIImage+Cropping.h"
- (UIImage *)revealedTrackImageForCurrentValues
{
//Get left and right x positions
float lowerHandleWidth = _lowerHandleHidden ? 2.0f : _lowerHandle.frame.size.width;
float upperHandleWidth = _upperHandleHidden ? 2.0f : _upperHandle.frame.size.width;
float xLowerValue = ((self.bounds.size.width - lowerHandleWidth) * (_lowerValue - _minimumValue) / (_maximumValue - _minimumValue))+(lowerHandleWidth/2.0f);
float xUpperValue = ((self.bounds.size.width - upperHandleWidth) * (_upperValue - _minimumValue) / (_maximumValue - _minimumValue))+(upperHandleWidth/2.0f);
// Get rect
CGRect croppedImageRect = CGRectMake(xLowerValue, 0.0f, xUpperValue - xLowerValue, self.trackImage.size.height);
//Get cropped image
UIImage *croppedImage = [self.trackImage revealedTrackImageForRect: croppedImageRect];
return croppedImage;
}