在iOs中制作透明的圈子

时间:2015-01-12 10:15:57

标签: ios ios7 uiview ios8

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

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

我想做的事情就像iShowcase library,但有多个点:

enter image description here

有任何线索吗?感谢。

解决

我看了iShowcase library的代码,我解决了我的问题。现在,我正在一个基于iShowcase library的图书馆工作。 我完成后会发布在这里。

4 个答案:

答案 0 :(得分:1)

为circleView使用alpha。与您的链接示例一样,然后在您的主视图中添加为子视图:

    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文件中添加更多按钮和展示,合成它们并使用多个实例.... showcase setupShowcaseForTarget:btn_custom_1 title:@“title”details:@“other”]; ?我认为你应该修改主类,因为你想要的是多个视图[圆圈]的不同容器视图。

使用修改过的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);]我没有时间对这个例子进行微调,但是,是的,你可以达到预期的结果..

答案 1 :(得分:1)

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

答案 2 :(得分:1)

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

https://github.com/tato469/FVEasyShowCase

答案 3 :(得分:0)

最简单的方法是使用主视图(黑色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。

还要记住一些错误,因为我只是从脑海中写下这个,我也没有对此进行测试。所以如果有效的话请保持更新/!工作^ _ ^