Doğrusal yöntem çok yavaş olduğu için code found here'u bir ikili algoritmaya dönüştürmeye çalışıyorum. Çalıştığım bir uygulama var, ama eksik olan bir şey var gibi görünüyor, çünkü elde ettiğim sonuçlar kesin değil (yani, genişlikten 20 veya daha fazla piksel ekler veya çıkarırsam, aynı kesilmiş olurum) string..it biraz daha doğru ve daha yakından kesim) sahip olmalıdır:Bir NSString'i genişliğe doğru kırpın
-(NSString*)stringByTruncatingToWidth:(CGFloat)width withFont:(UIFont*)font addQuotes:(BOOL)addQuotes
{
int min = 0, max = self.length, mid;
while (min < max) {
mid = (min+max)/2;
NSString *currentString = [self substringWithRange:NSMakeRange(min, mid - min)];
CGSize currentSize = [currentString sizeWithFont:font];
if (currentSize.width < width){
min = mid + 1;
} else if (currentSize.width > width) {
max = mid - 1;
} else {
min = mid;
break;
}
}
return [self substringWithRange:NSMakeRange(0, min)];
}
kimse bunda yanlış ne olabilir yarasa kapalı görebilir mi? (Bu kategori yöntemidir, bu nedenle self
bir NSString olduğunu
Bunu neden kendiniz hesaplamanız gerekiyor? Dize ile ne yapıyorsun? Yalnızca bir etiketin içinde gösteriliyorsanız, etiketi sizin için kesecek şekilde yapılandırabilirsiniz. Etiketin kesilmeyi önlemek için metne sığdırmak için yazı tipi boyutunu küçültmesine bile izin verebilirsiniz. –
Çizim yapıyorum ve sonunda bir elips eklemek gerekiyor. Ben de onun etrafında tırnak sarmak istiyorum, bu yüzden drawInRect withLineBreakMode burada bir seçenek değil, çünkü son alıntıyı keserdi .. – Snowman
Yukarıdaki bağlantı için Thx dude ... Benim deli gibi sorun çözüm aradı ama sonunda bulundu Gönderinizde .. – Rendy