Я не знаю, есть ли какое-либо другое решение, чтобы иметь трения внутри «нормального» UILabel, но вы можете создать свое собственное.
Создайте новый класс, расширяющий UIView, и нарисуйте две строки и линию между ними.
Ты можешь использовать
[str drawAtPoint:CGPointMake(x,y)]
Затем вы просто пишете метод набора, который принимает два числа или установщик для десятичного числа, а затем конвертируете это в трение.
- (void) setFractionValue: (NSNumber * ) a divider: (NSNumber * ) b {
// Draw fraction a/b
[[NSString stringWithFormat:@"%@", a] drawAtPoint:CGPointMake(x,y1)] ;
[[NSString stringWithFormat:@"%@", b] drawAtPoint:CGPointMake(x,y2)] ;
}
или используйте что-то вроде это:
- (void) setDecimalValue: (NSNumber *) decimal {
// convert decimal to fraction
// get a and b from fraction
// Draw fraction a/b
[[NSString stringWithFormat:@"%@", a] drawAtPoint:CGPointMake(x,y1)] ;
[[NSString stringWithFormat:@"%@", b] drawAtPoint:CGPointMake(x,y2)] ;
}
РЕДАКТИРОВАТЬ
Вариант использования:
@implementation TestDrawText
- (void)drawRect:(CGRect)rect {
[super drawRect:rect];
[self drawText:rect.origin.x + 10 yPosition:rect.origin.x + 10 text:@"2"];
[self drowLine:rect.origin.x + 11 yPosition:rect.origin.x + 30];
[self drawText:rect.origin.x + 20 yPosition:rect.origin.x + 20 text:@"5"];
}
- (void)drawText:(CGFloat)xPosition yPosition:(CGFloat)yPosition text: (NSString * ) text{
CGPoint point = CGPointMake(xPosition, yPosition);
NSDictionary* textFontAttributes = @{NSFontAttributeName: [UIFont fontWithName: @"Helvetica" size: 12], NSForegroundColorAttributeName: UIColor.redColor};
[text drawAtPoint:point withAttributes:textFontAttributes];
}
- (void) drowLine:(CGFloat)xPosition yPosition:(CGFloat)yPosition {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor);
// Draw them with a 2.0 stroke width so they are a bit more visible.
CGContextSetLineWidth(context, 2.0f);
CGContextMoveToPoint(context, xPosition, yPosition); //start at this point
CGContextAddLineToPoint(context, xPosition + 15, yPosition - 15); //draw to this point
// and now draw the Path!
CGContextStrokePath(context);
}
Это быстрый пример, и его нужно настроить в соответствии с вашими пожеланиями, но это начало, с которого вы могли бы пойти.
person
Marko Zadravec
schedule
16.06.2015