0

那里。如何从另一个 ViewController 更改 CGImageRef?

我有这个代码:

#import "ScratchableView.h"

@implementation ScratchableView

- (id)initWithFrame:(CGRect)frame {

    self = [super initWithFrame:frame];
    if (self) {

      //init with the scratchable gray image




           scratchable = [UIImage imageNamed:@"image.jpg"].CGImage;

            width = CGImageGetWidth(scratchable);
    height = CGImageGetHeight(scratchable);

    self.opaque = NO;
    CGColorSpaceRef colorspace = CGColorSpaceCreateDeviceGray();

    CFMutableDataRef pixels = CFDataCreateMutable( NULL , width * height );
    alphaPixels = CGBitmapContextCreate( CFDataGetMutableBytePtr( pixels ) , width , height , 8 , width , colorspace , kCGImageAlphaNone );
    provider = CGDataProviderCreateWithCFData(pixels);

    CGContextSetFillColorWithColor(alphaPixels, [UIColor blackColor].CGColor);
    CGContextFillRect(alphaPixels, frame);

    CGContextSetStrokeColorWithColor(alphaPixels, [UIColor whiteColor].CGColor);
    CGContextSetLineWidth(alphaPixels, 30.0);
    CGContextSetLineCap(alphaPixels, kCGLineCapSquare);

    CGImageRef mask = CGImageMaskCreate(width, height, 8, 8, width, provider, nil, NO);
    scratched = CGImageCreateWithMask(scratchable, mask);



    CGImageRelease(mask);
    CGColorSpaceRelease(colorspace);

    }
    return self;
}

现在从另一个视图控制器我想用 image2.jpg 更改 image.jpg。请帮帮我,我该怎么做?

我尝试使用应用程序委托,使用 nsstrings,但没有成功。我是初学者。

4

1 回答 1

0

让一个对象影响另一个对象的两种常见方法是提供可以设置的公共属性,或者在您的类上提供方法 + 参数。在这两种情况下,想要进行更改的对象都需要某种方式来访问第二个对象。常见的方法是在 UINavigation viewControllers 数组中找到它,或者通过 tabBarController,通过 appDelegate,或者第二个类是单例,可以通过询问类对象的引用来找到它。

当你解决这个问题时,调用类会执行类似发送具有此签名的消息的操作:

- (BOOL)updateImage:(CGImageRef)theNewImage
于 2012-08-26T15:22:14.340 回答