Я новичок в программировании на iOS, поэтому извините, если мой вопрос глупый.
Я пытаюсь создать приложение, которое выполняет произвольное рисование загруженного изображения.
Для этого я обнаружил, что решение состоит в том, чтобы создать подкласс UIView
и отредактировать метод drawRect
.
Я сделал это для следующего кода, который активируется на IBAction
, связанном с кнопкой в файле раскадровки Interface Builder.
UIImageView *image = [[UIImageView alloc] initWithImage: [UIImage imageNamed: @"SampleImage.jpg"]];
image.frame = previewView.frame;
[image setContentMode:UIViewContentModeScaleAspectFit];
[previewView addSubview:image];
customView *aCustomView = [[customView alloc] initWithFrame: CGRectMake(image.bounds.origin.x, image.bounds.origin.y, image.bounds.size.width, image.bounds.size.height)];
[previewView addSubview:aCustomView];
customView
- это созданный мной подкласс UIView
, чьи методы init
и drawRect
установлены следующим образом:
- (id)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
NSLog(@"INITIALIZING");
if (self) {
// Initialization code
[self setBackgroundColor:[UIColor clearColor]];
}
return self;
}
- (void)drawRect:(CGRect)rect
{
CGContextRef ctx = UIGraphicsGetCurrentContext();
NSLog(@"DRAWING");
CGContextClearRect(ctx, rect);
CGContextSetRGBFillColor(ctx, 0, 255, 0, 0.3);
CGContextFillEllipseInRect(ctx, rect);
CGContextSetRGBStrokeColor(ctx, 255, 0, 0, 1);
CGContextSetLineWidth(ctx, 2);
CGContextStrokeEllipseInRect(ctx, rect);
}
Проблема, с которой я столкнулся, заключается в том, что я не рисую, и на NSLog
у меня есть сообщение «ИНИЦИАЛИЗАЦИЯ», но нет рисунка «ЧЕРТЕЖ».
Так что в основном он создает initWithFrame
, но не вызывает метод drawRect
.
Не могли бы вы указать мне, что я делаю не так?