2013-03-07 68 views
0

我加入一个新的子视图加载图像而不笔尖

self.editView = [[EditView alloc] initWithFrame:CGRectMake(0,0,320,296) WithImageView:self.mainImageView.image]; 
      self.mainImageView.hidden=YES; 
      [self.view addSubview:self.editView]; 

新观点是:

- (id)initWithFrame:(CGRect)frame WithImageView: (UIImage *) image 
{ 
self = [super initWithFrame:frame]; 
if (self) { 
    self.panRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(handlePan:)]; 
    self.rotationRecognizer = [[UIRotationGestureRecognizer alloc] initWithTarget:self action:@selector(handleRotation:)]; 
    self.pinchRecognizer = [[UIPinchGestureRecognizer alloc] initWithTarget:self action:@selector(handlePinch:)]; 
    self.tapRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(handleTap:)]; 


    self.panRecognizer.cancelsTouchesInView = NO; 
    self.panRecognizer.delegate = self; 
    [self.frameView addGestureRecognizer:self.panRecognizer]; 
    self.rotationRecognizer.cancelsTouchesInView = NO; 
    self.rotationRecognizer.delegate = self; 
    [self.frameView addGestureRecognizer:self.rotationRecognizer]; 
    self.pinchRecognizer.cancelsTouchesInView = NO; 
    self.pinchRecognizer.delegate = self; 
    [self.frameView addGestureRecognizer:self.pinchRecognizer]; 
    self.tapRecognizer.numberOfTapsRequired = 2; 
    [self.frameView addGestureRecognizer:self.tapRecognizer]; 

    [self updateCropRect]; 

    [self reset:NO]; 

    self.retainedImage = image; 

    self.sourceImage = image; 
    self.imageView.image = self.previewImage; 

    if(self.previewImage != self.sourceImage) { 
     dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ 
      CGImageRef hiresCGImage = NULL; 
      CGFloat aspect = self.sourceImage.size.height/self.sourceImage.size.width; 
      CGSize size; 
      if(aspect >= 1.0) { //square or portrait 
       size = CGSizeMake(kMaxUIImageSize*aspect,kMaxUIImageSize); 
      } else { // landscape 
       size = CGSizeMake(kMaxUIImageSize,kMaxUIImageSize*aspect); 
      } 
      hiresCGImage = [self newScaledImage:self.sourceImage.CGImage withOrientation:self.sourceImage.imageOrientation toSize:size withQuality:kCGInterpolationDefault]; 

      // dispatch_async(dispatch_get_main_queue(), ^{ 
       self.imageView.image = [UIImage imageWithCGImage:hiresCGImage scale:1.0 orientation:UIImageOrientationUp]; 
       CGImageRelease(hiresCGImage); 
      // }); 
     }); 
    } 


} 
return self; 
} 

还有一些定制的图像setter方法。

- (UIImage *)previewImage 
{ 
if(_previewImage == nil && _sourceImage != nil) { 
    if(self.sourceImage.size.height > kMaxUIImageSize || self.sourceImage.size.width > kMaxUIImageSize) { 
     CGFloat aspect = self.sourceImage.size.height/self.sourceImage.size.width; 
     CGSize size; 
     if(aspect >= 1.0) { //square or portrait 
      size = CGSizeMake(kPreviewImageSize,kPreviewImageSize*aspect); 
     } else { // landscape 
      size = CGSizeMake(kPreviewImageSize,kPreviewImageSize*aspect); 
     } 
     _previewImage = [self scaledImage:self.sourceImage toSize:size withQuality:kCGInterpolationLow]; 
    } else { 
     //self.previewImage = [self.sourceImage retain]; 
     _previewImage = self.retainedImage; 
    } 
} 
return _previewImage; 

}

我不能在子视图加载图像。我知道这些属性不会在init上设置。但我如何设置它们。我尝试使用另一个属性retainedImage,并将其分配给其setter方法中的预览图像,但无法正常工作。

这是一个定制的库中找到here

回答

1

在创建对象时,将其设置为nil一个对象的属性。如果您想将属性更改为其他值,则可以用任何方法设置它们。

有很多可能的原因,你为什么没有看到图像。

  1. self.imageView是nil
  2. self.imageView.image是nil
  3. self.imageView的大小为0
  4. self.imageView隐藏
  5. self.imageView没有连接到
  6. self.imageView由其他视图

从你的描述,这我遮挡任何意见很难分辨出背后的原因。