【问题标题】:iPhone clear UIView alpha at touch locationiPhone在触摸位置清除UIView alpha
【发布时间】:2013-04-15 13:34:18
【问题描述】:

我想在UIView 中显示图像,因为我必须自定义(void)drawRect:(CGRect)rect。我必须清除用户“摩擦”屏幕的视图的 alpha,因此该视图后面的子视图将变得可见。
如果我使用纯色效果很好,但是当我尝试绘制图像并清除用户触摸屏幕的视图时,不会绘制图像。 你能帮我吗,我应该如何绘制UIImage,以便在背景中绘制并在特定的rect中变得透明,好吗?

这是我的代码,它适用于纯色(就像现在一样):

- (void)drawRect:(CGRect)rect {
    CGContextRef context = UIGraphicsGetCurrentContext();

    CGContextSaveGState(context);

    CGContextSetFillColorWithColor( context, [UIColor greenColor].CGColor );
    CGContextFillRect( context, rect );

    CGContextSetFillColorWithColor( context, [UIColor clearColor].CGColor );
    CGContextSetBlendMode(context, kCGBlendModeClear);
    CGContextFillRect(context, CGRectMake(lastTouch.x, lastTouch.y, 30, 30));

    CGContextRestoreGState(context);
}

【问题讨论】:

    标签: iphone ios transparent alpha quartz-core


    【解决方案1】:

    在 github 上已经有一个很好的控件用于此目的。 退房:

    https://github.com/akopanev/iOS-Scratch-n-See

    我已经用它作为“scratch game”应用程序的起点。 代理还会收到屏幕/图像有多少已被清除(即“划掉”)的信息。

    祝你好运!

    【讨论】:

    • 谢谢!正是我想要的! :)
    【解决方案2】:

    我不确定你的问题...但如果问题是当用户触摸屏幕时没有调用 drawRect...试试这个:

    放一个

    [self setNeedsDisplay];
    

    在您的触摸事件中... UIGestureRecognizer 或覆盖 UITouches 方法

    【讨论】:

    • 不,drawrect被调用,但如果我尝试输入这样的代码: UIImage *image = [UIImage imageNamed:@"menu.png"]; CGContextDrawImage(context, CGRectMake(0,0,320, 480), image.CGImage);有一个背景图像而不是绿色,图像不可见..
    • 您的代码中没有错误,您是否检查了图像对象是否为 != nil ?其次...不要使用 png 资产的文件扩展名 使用它像 [UIImage imageNamed:@"menu"] 系统将从包中加载正确的资产@2x 或常规(这仅适用于 .png 文件)
    猜你喜欢
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-06
    • 1970-01-01
    相关资源
    最近更新 更多