我正在开发Iphone应用程序。我想要一个小的隐形方块网格。
我希望能够从代码中更改这些方块的颜色。
我该怎么做?
其他信息:
网格是静态的(某种象棋网格),我需要能够改变其中给定方块的颜色。例如,将方形C3的颜色更改为红色,将E7的颜色更改为绿色。
除了着色之外,我不想在广场上放置任何内容。
答案 0 :(得分:1)
您可以继承UIView,添加一些数据结构来保存单元格信息并覆盖drawRect:方法。
这样的事情:
// in view
-(void)drawCellAtRow:(int)row column:(int)column
{
// draw a cell
}
-(void)drawRect:(CGRect)rect
{
// determine which cells have to be drawn for this rect
// and draw them
}
-(void)changeCellAtRow:(int)row column:(int)column
{
// change cell info
// calculate rect to update
[self setNeedsDisplayInRect:dirtyRect];
}
// in view controller
-(void)eventHandler
{
[cellView changeCellAtRow:row column:column];
}
答案 1 :(得分:0)
theView.backgroundColor = color;
答案 2 :(得分:0)
当我想要创建一个视图时,有42个子视图(在网格中) - 我只是使用了drawRect并在正确的位置绘制了必要的颜色渐变,并在它们上 - 绘制了必要的文本。 (我还需要不同渐变颜色的不同方块,如果您还需要 - 我相信您将能够进一步调整此代码:))
- (void)drawRect
{
int mWidth = 99;
int mHeight = 99;
//--- now we draw all gradients (will have 1 pix wide space between each)
for(int i = 0; i < 100; i++)
{
for(int j = 0; j < 100; j++)
{
//--- gradient color
CGColorSpaceRef baseSpace = CGColorSpaceCreateDeviceRGB();
CGFloat colors [] = { //these values are for a white square block.
255/255.0, 255/255.0, 255/255.0, 1.0,
255/255.0, 255/255.0, 255/255.0, 1.0
};
CGGradient gradient = CGGradientCreateWithColorComponents(baseSpace, colors, NULL, 2);
CGColorSpaceRelease(baseSpace), baseSpace = NULL;
CGContextSaveGState(context);
CGContextAddRect(context, rect);
CGContextClip(context);
CGContextAddRect(context, CGRectMake(1+j*(mWidth+1),0+i*(mHeight+1),mWidth,mHeight+i*mHeight+i*1));
CGContextClip(context);
//+ 1 values to make sure we have one pix wide space between any two squares
CGContextDrawLinearGradient (context, gradient, CGPointMake(1+j*(mWidth+1), 0+i*(mHeight+1)), CGPointMake(1+j*(mWidth+1),0+mHeight+i*mHeight+i*1), 0);
CGGradientRelease(gradient), gradient = NULL;
CGContextRestoreGState(context);
//===
//Here We can draw any string labels we need.
}
}
祝你好运!