我想繪製一個UIView上的字符數組。問題在於視圖不會自動刷新,因此不顯示字符。當我們在這裏和那裏觸摸屏幕時,它會顯示出來(有時只是char的一部分)。當我們重新繪製一組新的字符(當數組更新時),舊的字符也不會被清除。雖然重畫之前繪製的更新數組並不會從UIView中清除,但它只是在同一視圖上寫入並顯示兩者。當我們reDraw字符串UIView不清除(刷新)
這是我的代碼:
在MyView類中。
-(void)drawRect:(CGRect)rect
{
context=UIGraphicsGetCurrentContext();
}
-(void)initializeWithChar:(char)characterToDisplay andAttribute:(Byte)attribute
{
displayChar = characterToDisplay;
displayCharAttribute = attribute;
}
-(void)setNeedsDisplayInRect:(CGRect)rect{
NSString *charString;
UIGraphicsPushContext(context);
charString = [NSString stringWithFormat:@"%c",displayChar];
// while background color is black.
CGContextSetFillColorWithColor(context, [UIColor greenColor].CGColor);
[charString drawInRect:CGContextConvertRectToUserSpace(context, rect)
withFont:[UIFont fontWithName:@"Courier New" size:10]
lineBreakMode:NSLineBreakByWordWrapping
alignment:NSTextAlignmentLeft];
UIGraphicsPopContext();
}
-(void)clearScreenInRect:(CGRect) rect{
[self.viewForBaselineLayout setClearsContextBeforeDrawing:YES];
[self.viewForBaselineLayout setOpaque :NO];
CGContextClearRect (context,rect);
// I TRIED THIS AS WELL -> but dosen't work..
//CGContextSetFillColorWithColor(contxt, [UIColor blackColor].CGColor);
//CGContextFillRect(contxt, rect) ;
}
writeDrawView類
// CODE BELOW is DRAWING FRESH ARRAY ON VIEW
//this method draw a sign in form on view (content are placed in SignInFormArray)
-(void)writeToDrawViewFrom_SignInFormArray{
for (int rownumber = 0; rownumber < 10; rownumber++) {
for (int columnNumber = 0; columnNumber < 30; columnNumber++) {
[myView initializeWithChar:SignInFormArray[rownumber][columnNumber] andAttribute:Attribute[rownumber][columnNumber]];
[myView setNeedsDisplayInRect:CGRectMake(columnNumber*12 , rownumber*30, 12, 30)];
}
}
}
-(void)clearButtonClicked{
for (int rownumber = 0; rownumber < 10; rownumber++) {
for (int columnNumber = 0; columnNumber < 30; columnNumber++) {
[myView clearScreenInRect:CGRectMake(columnNumber*12 , rownumber *30 , 12, 30)];
}
}
}
// CODE BELOW is UPDATING VIEW FROM UPDATED ARRAY
//this method draw a home page menu form on view (content are placed in HomePageMenuArray)
-(void)writeToDrawViewFrom_HomePageMenuArray{
for (int rownumber = 0; rownumber < 10; rownumber++) {
for (int columnNumber = 0; columnNumber < 30; columnNumber++) {
[myView initializeWithChar:HomePageMenuArray[rownumber][columnNumber] andAttribute:Attribute[rownumber][columnNumber]];
[myView setNeedsDisplayInRect:CGRectMake(columnNumber*12 , rownumber*30, 12, 30)];
}
}
}
爲什麼不在drawRect中繪圖? – Amar