2011-01-13 4 views
1

Ich bin relativ neu zu Core Text, aber habe gut, aber ich habe Probleme mit der Anpassung der Breite einer Registerkarte.Adjust Weite der Core Text Registerkarte

Derzeit verwende ich diesen Code, den ich durch einen Blick auf die Dokumentation und Mailing-Liste geschrieben haben:

CFIndex theNumberOfSettings = 1; 

    CFIndex i = 0; 
    CTTextTabRef tabArray[1]; 
    CTTextAlignment align = 0; 
    CGFloat location = 80; 
    for (;i < 1; i++) { 
     tabArray[i] = CTTextTabCreate(align, location, NULL); 
    }  
    CFArrayRef tabStops = CFArrayCreate(kCFAllocatorDefault, (const void**) tabArray, 1, &kCFTypeArrayCallBacks);  
    for (;i < 1; i++) { CFRelease(tabArray[i]); } 

    CTParagraphStyleSetting theSettings[1] = 
    { 
     { kCTParagraphStyleSpecifierTabStops, sizeof(CFArrayRef), &tabStops }, 
    }; 

    CTParagraphStyleRef paragraphStyle = CTParagraphStyleCreate(theSettings, theNumberOfSettings); 
    [self.attributedString addAttribute:(NSString *)kCTParagraphStyleAttributeName 
            value:(id)paragraphStyle 
            range:range]; 

Durch Einstellen des Wertes von location Ich bin in der Lage, die Breite der Lasche einzustellen jedoch diese nur arbeitet für den ersten Tab, der erstellt wird, nachdem er auf eine andere Breite zurückgesetzt wurde, die vergleichsweise sehr klein ist.

Warum macht es das?

Antwort

2

Ich könnte mir vorstellen, das Problem ist, dass alle Ihre Tabs mit dem gleichen Speicherort erstellt werden. Jeder sollte wahrscheinlich ein Vielfaches von 80 sein, anstatt genau 80 zu sein.

+0

Genau das war es, vielen Dank! – Joshua