Не правильно делает рисунки компьютерной графики
Я только начал работать с Core Graphics, и я, вероятно, понятия не имел, что происходит.
В следующем коде я пытаюсь создать маленький округлый полупрозрачный черный квадрат, наложенный поверх UINavigationController, но пока ничего не обнаружилось...
UIView *notificationView = [[UIView alloc] initWithFrame:[[[self navigationController] view] frame]];
CGRect rect = CGRectMake(self.view.frame.size.width / 2 - 50, self.view.frame.size.height / 2, 100, 100);
UIGraphicsBeginImageContextWithOptions(rect.size, NO, 0.0);
[[UIColor colorWithWhite:0 alpha:0.5] setFill];
UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:10];
[path fill];
[notificationView setNeedsDisplay];
[[[self navigationController] view] addSubview:notificationView];
1 ответ
Вариант 1 (самый удобный дизайн)
UIView
На самом деле они не предназначены для того, чтобы другие объекты втягивались в них. Это имеет гораздо больше смысла дизайна для подкласса UIView
и пусть он делает свой собственный рисунок в drawRect
, Таким образом, вам не нужно вставлять так много кода каждый раз, когда вы хотите использовать представление уведомлений.
Вариант 2 (самый простой и, вероятно, лучший)
Если вам просто нужен полупрозрачный черный прямоугольник с закругленными углами (я полагаю, для индикатора загрузки), вы можете сделать это намного проще, создав UIView в нужном размере и центрировав его в виде. Установите его цвет фона на полупрозрачный цвет, [UIColor colorWithWhite:0.0 alpha:0.5]
, Наконец, добавьте строку
notificationView.layer.cornerRadius = 10.0;
Вам также может понадобиться поставить #import <QuartzCore/QuartzCore.h>
в вашем заголовочном файле, так как это CALayer
трюк.
Вариант 3 (окольный)
Если вы действительно хотите сделать это так, как вы уже делаете, измените notificationView
к UIImageView
, затем установите рамку вида равной размеру черного скругленного прямоугольника. Затем добавьте это после того, как вы заполните путь:
UIImage *indicatorImage = UIGraphicsGetImageFromCurrentImageContext();
notificationView.image = indicatorImage;
Вам не нужно звонить setNeedsDisplay
больше.
Надеюсь, один из этих звуков звучит хорошо для вас!