为笔尖启动的视图添加边框和阴影

Posted

技术标签:

【中文标题】为笔尖启动的视图添加边框和阴影【英文标题】:Adding a border and shadow to a nib initiated view 【发布时间】:2013-07-19 12:53:14 【问题描述】:

我正在创建 UIViewController 的子类,当用户按下按钮时,它将启动并添加来自另一个 UIViewController 子类的视图。

在添加的视图中,我有一个 UIWebViewUIButton 实例(用于关闭弹出窗口)。

因为是弹窗,所以想给UIWebView加边框和阴影,但是由于是nib发起的,不知道怎么修改绘图代码。

有什么帮助吗? :)

【问题讨论】:

【参考方案1】:

看看使用视图的CALayer

添加边框:

myView.layer.borderWidth = 1.f;
myView.layer.borderColor = [UIColor blackColor].CGColor;

添加阴影也有类似的方法:

myView.layer.shadowColor = [UIColor blackColor].CGColor;
myView.layer.shadowOffset = CGSizeMake(4.f, 4.f);
myView.layer.shadowRadius = 4.f;
myView.layer.shadowOpacity = 0.5f;
myView.layer.shouldRasterize = YES;

您需要将 Quartz 框架添加到您的目标中,并将标头导入控制器的 .m 文件中:

#import <QuartzCore/QuartzCore.h>

【讨论】:

啊哈!所以它已经包含在 UIView 类中了!多谢! :) 但是最后一行有什么不同呢?位图还是没有位图? shouldRasterize 属性设置为YES 可以提高添加阴影的性能。【参考方案2】:

您可以通过这种方式为任何控件添加BorderShadow。您还可以设置Border的Width ,也可以做成圆角

CALayer * l1 = [viewPopup layer];
[l1 setMasksToBounds:YES];
[l1 setCornerRadius:5.0];

// Add a border
[l1 setBorderWidth:5.0];
[l1 setBorderColor:[[UIColor darkGrayColor] CGColor]];

// Add a shadow
[l1 setShadowColor:[[UIColor darkGrayColor] CGColor]];
[l1 setShadowOpacity:5.0];
// You can more methods for shadow

只需将viewPopup 替换为您的控件即可。

注意:-别忘了导入&lt;QuartzCore/QuartzCore.h&gt;

【讨论】:

以上是关于为笔尖启动的视图添加边框和阴影的主要内容,如果未能解决你的问题,请参考以下文章

为按钮添加边框和阴影

arcgis版面视图中怎么修改整张地图背景?

如何在内容增长的同时为 UIView 的阴影边框设置动画

说说在 Canvas 中如何添加阴影

如何使用三个角和阴影制作图像视图

hbuilder那个属性可以为div元素添加阴影边框