Necesito dibujar un UILabel tachado. Por lo tanto, subclasé UILabel y lo implementé de la siguiente manera:
@implementation UIStrikedLabel
- (void)drawTextInRect:(CGRect)rect{
[super drawTextInRect:rect];
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextFillRect(context,CGRectMake(0,rect.size.height/2,rect.size.width,1));
}
@end
Lo que sucede es que el UILabel se tacha con una línea que es tan larga como toda la etiqueta, pero el texto puede ser más corto. ¿Hay alguna forma de determinar la longitud del texto en píxeles, de modo que la línea se pueda dibujar correctamente?
También estoy abierto a cualquier otra solución, si la conozco :)
Mejor, Erik
fuente
label.attributedText.size
.Una mejor solución, aquí en Swift :
Actualización:
Para
Swift 3/4
:@IBOutlet weak var testLabel: UILabel! // in any function testLabel.text = "New Label Text" let width = testLabel.intrinsicContentSize.width let height = testLabel.intrinsicContentSize.height print("width:\(width), height: \(height)")
Respuesta anterior:
yourLabel?.text = "Test label text" // sample label text let labelTextWidth = yourLabel?.intrinsicContentSize().width let labelTextHeight = yourLabel?.intrinsicContentSize().height
fuente
let sanskritLabel = UILabel(frame: CGRectMake(0, 120, sanskritStringSize.width, sanskritStringSize.height))
Esto funcionará. Intentalo
NSDictionary *attrDict = @{NSFontAttributeName : [GenericUtility getOpenSansRegularFontSize:12]}; CGSize stringBoundingBox = [selectedReservationModel.DateLabel sizeWithAttributes: attrDict]; lblDeliveryDateWidth = stringBoundingBox.width;
fuente