0

刚开始使用 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];
4

1 回答 1

0

选项 1(最适合设计的选项)

UIViews 并不真正意味着其他对象可以吸引到它们中。子类化UIView并让它在drawRect. 这样,您不必在每次想要使用通知视图时粘贴这么多代码。

选项 2(最简单的,可能是最好的)

如果你只想要一个半透明的黑色圆角矩形(我假设是一个加载指示器),你可以通过以你想要的大小创建 UIView 并将其在视图中居中来更容易地做到这一点。将其背景色设置为半透明色,[UIColor colorWithWhite:0.0 alpha:0.5]。最后,添加行

notificationView.layer.cornerRadius = 10.0;

您可能还需要放入#import <QuartzCore/QuartzCore.h>头文件,因为这是一个CALayer技巧。

选项3(环岛一)

如果您真的想按照您已经在做的方式进行操作,请将 更改notificationView为 a UIImageView,然后将视图的框架设置为黑色圆角矩形的大小。然后在填写路径后添加:

UIImage *indicatorImage = UIGraphicsGetImageFromCurrentImageContext();
notificationView.image = indicatorImage;

你不需要再打电话setNeedsDisplay了。

希望其中一个听起来不错!

于 2013-07-19T03:25:34.240 回答