Effettivamente il sistema è quello di ridefinire il Paint di un controllo. Ecco un esempio semplice ma funzionante:
#import <Foundation/Foundation.h>
@interface MyLine : UIView
- (id)initWithFrame:(CGRect)frame;
@end
#import "MyLine.h"
@implementation MyLine
- (id)initWithFrame:(CGRect)frame {
if (self = [super initWithFrame:frame]) {
[self setBackgroundColor:[UIColor colorWithWhite:1 alpha:0]];
}
return self;
}
- (void)drawRect:(CGRect)rect {
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSetStrokeColorWithColor(context, [UIColor redColor].CGColor); // linea rossa
CGContextSetLineWidth(context, 2.0); // spessore 2
CGContextMoveToPoint(context, 0,0); // punto iniziale
CGContextAddLineToPoint(context, 300, 300); // punto finale
CGContextStrokePath(context);
}
@end