刚开始使用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];
答案 0 :(得分:0)
选项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
。
希望其中一个听起来不错!