gpt4 book ai didi

iphone - 关于iOS绘图的问题

转载 作者:行者123 更新时间:2023-12-03 21:02:31 26 4
gpt4 key购买 nike

我想在 iPhone 屏幕底部创建一个小导航栏,我基本上只是在其中绘制 5 个彼此相邻的矩形。但是,只有事件页面的不透明度应为 1.0,其他页面应稍微透明(alpha=0.4)。 这就是我已经拥有的。

现在我的问题:

  • 如何更改导航中各个元素的不透明度?每当事情发生变化时,我是否必须重新绘制整个事物?所以我会有名为 nav1Opacity、nav2Opacity...nav5Opacity 的全局变量,在导航更改时更改它们并重新绘制整个内容?如果是这样,

  • 如何清除之前绘制的内容?我是否将矩形创建为 CGMutablePathRef() 并将它们存储在数组中并清除它们?

我对绘画的经验很少,所以我有点迷失在那里。我已经阅读了 Quartz2d 和 contexts 的文档,但是,正如我提到的,我还没有完全弄清楚它是如何工作的。

这是我使用的一些代码:

-(void)drawRect:(CGRect)rect{

CGContextRef context = UIGraphicsGetCurrentContext();
//save state
CGContextSaveGState(context);

//NAV1
CGMutablePathRef nav1 = CGPathCreateMutable();
CGPathAddRect(nav1, NULL, CGRectMake(0 , 15, 64, 10));
UIColor *blueColor = UIColorFromRGB(0x35BFE5,0.1);
CGColorRef bC = [blueColor CGColor];
[colorArray addObject:(__bridge id)bC];
[navArray addObject:(__bridge id)nav1];
CGPathRelease(nav1);
/*
*
*
... I do this for all 5 navigation elements

*
*
*/

//then I go through all my rectangles and add/fill them
for(int i=0;i<[navArray count];i++){
CGContextAddPath(context, (__bridge CGMutablePathRef)[navArray objectAtIndex:i]);
CGContextSetFillColorWithColor(context, (__bridge CGColorRef)[colorArray objectAtIndex:i]);
CGContextFillPath(context);

}

// restore to last saved context state
CGContextRestoreGState(context);
}

//and this is how I redraw
-(void)updateActiveNav{
[navArray removeAllObjects];
[colorArray removeAllObjects];
[self setNeedsDisplay];
}

最佳答案

如果您实际上绘制界面,则每当它发生变化时,您都必须重新绘制它,至少是变化的矩形。您可以重用 CGPath,但它们不是屏幕上的图形对象,它们只是有关如何绘制形状的说明,因此您必须重新绘制所有内容。

话虽这么说,您可以使用单独的 UIView,它们代表屏幕上的对象,并且您可以更改它们的不透明度,这将反射(reflect)在屏幕上。

关于iphone - 关于iOS绘图的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13839624/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com