在 iOs 中制作透明圆圈

Making transparent Circles in iOs

我想创建一个带有透明圆圈的黑色 UIView。

我想创建一个视图(黑色和透明度 50%),并在其中添加多个圆圈,但我不知道如何为每个设置透明度。我知道如何创建圆形视图(示例:how to draw a custom uiview that is just a circle iphone-app)。

我想做的是类似 iShowcase library 但有多个点:

有线索吗?谢谢。

已解决

我看了一下iShowcase library的代码,我解决了我的问题。现在,我在 iShowcase library 的一家图书馆工作。 等我写完就post这里

为您的 circleView 使用 alpha。如在您的 link 示例中,然后在您的主视图中添加为子视图:

    UIView *circleView = [[UIView alloc] initWithFrame:CGRectMake(10,20,100,100)];
    circleView.alpha = 0.5;
    circleView.layer.cornerRadius = 50;
    circleView.backgroundColor = [UIColor whiteColor];
    [yourmainview addSubview: circleView];

顺便说一句,在你的照片中我认为白色圆圈有 100% 的 alpha。您可以为每个 circleView 使用单独的 alpha,或使用随机发生器 :)

至于更新的示例,为什么不在 h 文件中添加更多按钮和展示,合成它们并使用多个实例....展示 setupShowcaseForTarget:btn_custom_1 标题:@"title" 详细信息: @"other"]; ?我认为你应该修改 main 类,因为你想要的是多个视图 [circles] 的不同 containerView。

使用修改后的 iShowcase.m [- (void) calculateRegion] 和不同的视图作为容器,我能够做出类似的东西: http://tinypic.com/view.php?pic=2iwao6&s=8#.VLPTRqYsRE8 所以答案是:使用自定义视图进行多个展示[ex [showcase2 setContainerView:self.view2];],然后为每个展示柜自定义框架 [showcase2.frame = CGRectMake(0,0,100,100);] 我没有时间微调示例,但是是的, 你可以达到想要的效果...

请看下面link希望对您有所帮助。 Link : Here is Answer to set shadow in your view.

您可以做的最简单的事情就是拥有主视图(黑色 50% 透明)并向其遮罩层添加形状。

所以基本上:

//Set up your main view.
UIView* mainView = [UIView new];
mainView.backgroundColor = [UIColor blackColor];
mainView.alpha = 0.5;

UIView* circle1 = [YourCircleClassHere new];
UIView* circle2 = [YourCircleClassHere new];
UIView* circle3 = [YourCircleClassHere new];

UIView* container = [UIView new];

[UIView addSubview:circle1];
[UIView addSubview:circle2];
[UIView addSubview:circle3];

//Make a new layer to put images in to mask out
CALayer* maskLayer = [CALAyer layer];
//Assign the mask view to the contents layer.
maskLayer.contents = (id)container;
//This will set the mask layer to the top left corner.
maskLayer.frame = CGRectMake(0,0,container.frame.size.width,container.frame.size.height);
//Lastly you assign the layer to the mask layer of the main view.
mainView.layer.mask = maskLayer;
//Applies basically the same as clipToBounds, but a bit reversed..
mainView.layer.mask = true/false;

旁注:

我用图像 "contents = (id) [UIImage CGImage]" 实现了这一点,但我相信它也适用于 UIViews。

还请注意一些错误,因为我只是凭自己的想法写的,我也没有测试过。所以如果它有效,请让我更新/!有效 ^_^

我终于解决了受 iShowCase 库启发的问题我做了这个简单的 class 并上传到 github。

https://github.com/tato469/FVEasyShowCase