2014-01-14 5 views
0

기본적으로 주어진 이미지 아래에 주어진 텍스트를 추가하는이 함수는 을 사용하는 방법을 이해하는 데 도움이 될 textRect 모서리를 만들고 싶습니다.UIView처럼 둥근 CGRect 모서리 돌기

-(UIImage*) overlapText:(NSString*) p_text inImage:(UIImage*) p_image atPoint:(CGPoint) p_point 
{ 
    p_point.y += p_image.size.height-5; 

    UIFont *font = [UIFont boldSystemFontOfSize:11]; 
    UIGraphicsBeginImageContext(CGSizeMake(p_image.size.width+15,p_image.size.height+15)); 
    CGFloat imageX = (p_image.size.width+10)/2 - (p_image.size.width/2); 
    [p_image drawInRect:CGRectMake(imageX,0,p_image.size.width,p_image.size.height)]; 

    CGRect textRect = CGRectMake(0, p_point.y, p_image.size.width+15, p_image.size.height+10); 

    [[UIColor colorWithRed:(70/255.0) green:(70/255.0) blue:(70/255.0) alpha:1] set]; 
    CGContextFillRect(UIGraphicsGetCurrentContext(), textRect); 


    [[UIColor whiteColor] set]; 
    [p_text drawInRect:textRect withFont:font lineBreakMode:NSLineBreakByTruncatingTail alignment:NSTextAlignmentCenter]; 


    UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext(); 
    UIGraphicsEndImageContext(); 

    return newImage; 
} 

답변

0

이미지 컨텍스트 그래서 그냥, bezierPathWithRoundedRect:cornerRadius:와 둥근 RECT를 구성하여 채우기 색을 설정하고 fill에 베 지어 패스를 말해, 현재의 상황이다. 한 줄의 코드입니다 (채우기 색상을 세는 경우 2 글쎄).

[[UIColor colorWithRed:(70/255.0) green:(70/255.0) blue:(70/255.0) alpha:1] set]; 
[[UIBezierPath bezierPathWithRoundedRect:textRect cornerRadius:5] fill]; 

부담없이 숫자를 입력하십시오. 예를 들어, 다른 코너 반경을 원할 수 있습니다. 실험!

+0

코드를 도와 주시겠습니까? CGRect를 삭제합니까? –

+0

CGRect는 단지 경로 일뿐입니다. 다른 길을 사용하는 것입니다. 당신은'CGContextFillRect'를 말하고 있습니다. 그 채워진 사각형을 그립니다. 대신 채워진 둥근 사각형을 그리는 것이 좋습니다. – matt