Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSString drawInRect:与FONT:和核心文本图形位于同一Draw Rect中_Iphone_Objective C_Ios_Core Graphics_Core Text - Fatal编程技术网

Iphone NSString drawInRect:与FONT:和核心文本图形位于同一Draw Rect中

Iphone NSString drawInRect:与FONT:和核心文本图形位于同一Draw Rect中,iphone,objective-c,ios,core-graphics,core-text,Iphone,Objective C,Ios,Core Graphics,Core Text,我想画“你好,世界!”两次一次使用NSString的UIStringDrawing类别方法,一次使用核心文本。无论我尝试什么,核心文本版本都是大的。有人能解释为什么吗 下面是我创建的UIView裸体UIView子类的完整实现 @implementation CTView - (id)initWithFrame:(CGRect)frame { self = [super initWithFrame:frame]; if (self) { self.opaque =

我想画“你好,世界!”两次一次使用NSString的UIStringDrawing类别方法,一次使用核心文本。无论我尝试什么,核心文本版本都是大的。有人能解释为什么吗

下面是我创建的UIView裸体UIView子类的完整实现

@implementation CTView

- (id)initWithFrame:(CGRect)frame
{
    self = [super initWithFrame:frame];
    if (self) {
        self.opaque = YES;
        self.backgroundColor = [UIColor whiteColor];
    }
    return self;
}

- (void)drawRect:(CGRect)rect
{
    CGContextRef c = UIGraphicsGetCurrentContext();

    [[UIColor blackColor] set];
    NSString *helloWorld = @"Hello World!";
    UIFont *helloWorldFont = [UIFont systemFontOfSize:16];

    CGContextSaveGState(c); {
        [helloWorld drawInRect:rect
                      withFont:helloWorldFont];
    } CGContextRestoreGState(c);

    CGContextSaveGState(c); {  

        // setting up attributed string of the catagory name to draw with Core Text    
        NSMutableAttributedString *name = [[NSMutableAttributedString alloc] initWithString:@"P"];
        [name setFont:helloWorldFont];
        [name setTextColor:[UIColor blackColor]];    

        // getting frames for the text    
        CTFramesetterRef framesetter = CTFramesetterCreateWithAttributedString((__bridge CFAttributedStringRef)name);    
        CFRelease(name);    

        CGMutablePathRef path = CGPathCreateMutable();
        CGPathAddRect(path, NULL, rect);
        CTFrameRef textFrame = CTFramesetterCreateFrame(framesetter, CFRangeMake(0, 0), path, NULL);
        CGPathRelease(path);
        CFRelease(framesetter);

        // draw the text
        CTFrameDraw(textFrame, c);
        CFRelease(textFrame);        
    } CGContextRestoreGState(c);  

}

@end
NSMutableAttributeString通常没有setFont:和setTextColor:方法。您是否添加了实现这些方法的类别?如果是这样,请向我们展示.nsmutableAttributeString通常没有setFont:和setXtcolor:方法。您是否添加了实现这些方法的类别?如果是的话,让我们看看。