自定义绘图在退出前不可见

Posted

技术标签:

【中文标题】自定义绘图在退出前不可见【英文标题】:Custom drawing invisible until quit 【发布时间】:2011-01-17 10:41:36 【问题描述】:

在我的 UIView 子类中,自定义绘图。原始绘图工作正常,即从viewDidLoad 触发或从滑动或摇动手势触发时,清除屏幕并重绘。

当我尝试已经存在的东西上绘制时,问题就出现了——它的行为不规律,通常是不可见偏移我已经放置了它,但是如果我按下主页按钮,它就会出现。在按下主页按钮时,随着视图的消失,我瞥见了我试图绘制的内容。如果我重新启动应用程序,所有绘图都在那里。什么给了?

我的设置如下:

- (void)drawRect:(CGRect)rect; 
    cgRect = [[UIScreen mainScreen] bounds];
    cgSize = cgRect.size;
        context = UIGraphicsGetCurrentContext();

    for (int i=0; i<(cgSize.width / spacing); i++) 
        for (int j=0; j<(cgSize.height / spacing); j++) 
            [self drawObjectAtPosX:i*spacing andY:j*spacing withId:i*(cgSize.height / spacing) + j];
         
     

在某些对象上有不可见的按钮。当它们被按下时,对象将以不同的颜色重新绘制:

-(void)buttonPressed:theButton 
int which = [theButton tag];
if ([[objectArray objectAtIndex:which] shouldBeRedrawn]) 
        [self redrawObjectforID:which];
    


-(void)redrawObjectforID:(int)which 
        myObject *chosenOne = [objectArray objectAtIndex:which];
        CGFloat m_x = chosenOne.x;
        CGFloat m_y = chosenOne.y;
        context = UIGraphicsGetCurrentContext();
        CGContextSetRGBStrokeColor(context, 205/255.0,173/255.0,0.0,1.0); // LINE color
        CGContextSetRGBFillColor(context, 205/255.0,197/255.0,0.0,1.0); // FILL color
        CGContextTranslateCTM(context, m_x, m_y);
        CGContextRotateCTM(context, chosenOne.rotation);
        for (int i=0; i<4; i++) 
            [self drawObjectSegmentatX:m_x andY:m_y forID:which inContext:context]; // custom drawing stuff
            CGContextRotateCTM(context, radians(90));
         
        CGContextRotateCTM(context, -chosenOne.rotation);
        CGContextTranslateCTM(context, -m_x, -m_y);

【问题讨论】:

更新:buttonPressed 的绘图似乎也在 y 轴上镜像(一旦出现,自然而然)。我会不小心在绘图上下文(y = 0 表示底部)和位图上下文(y = 0 表示顶部)之间进行某种切换吗? 【参考方案1】:

回答我自己,但这是我今天学到的:

所有自定义绘图都需要在DrawRect。我看到的故障行为是 DrawRect 被视图调用消失或恢复的结果。移动了,它工作了。

自定义重绘的位置仍然关闭,但这是另一个问题。

【讨论】:

以上是关于自定义绘图在退出前不可见的主要内容,如果未能解决你的问题,请参考以下文章

需要 MFC 自定义滚动条的建议

GMap 自定义绘图

如何使完全透明视图上的绘图可见

自定义外观 plotly.js 图例

MAUI 自定义绘图入门

MAUI 自定义绘图入门