iPhone 画面の下部に小さなナビゲーション バーを作成したいと考えています。基本的には、5 つの長方形を並べて描画するだけです。ただし、アクティブなページのみ不透明度を 1.0 に設定し、その他のページはわずかに透明にする必要があります (アルファ = 0.4)。それは私がすでに持っているものです。
今私の質問:
ナビゲーションの個々の要素の不透明度を変更するにはどうすればよいですか? 何かが変更されるたびに全体を再描画する必要がありますか? したがって、nav1Opacity、nav2Opacity...nav5Opacity というグローバル変数を使用し、ナビゲーションが変更されたときにそれらを変更し、全体を再描画しますか? もしそうなら、
以前に描いたものをクリアするにはどうすればよいですか? 長方形を
CGMutablePathRef()
s として作成し、それらを配列に格納してすべてクリアしますか?
私は絵を描く経験がほとんどないので、そこで少し迷っています。Quartz2d とコンテキストのドキュメントを読みましたが、前述したように、それがどのように機能するかを完全には理解していません。
ここに私が使用するいくつかのコードがあります:
-(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];
}