【发布时间】:2016-04-12 13:31:02
【问题描述】:
layer 的 borderWidth 和 borderColor 属性在视图内部绘制边框。 Remykits 指出了这一点here。
layer 的 shadow... 属性不能用于创建既出现在所有四个边上 并且不透明的边框> 因为我展示了here。
我未能在该问题中指定(以及我打开新问题的原因)是我希望边框在视图之外。正如建议的那样,增加视图的frame 以补偿丢失的空间是行不通的;我使用的是UIImageView,所以即使frame 增加,image 仍然被裁剪。
另一个建议是将UIImageView 的contentMode 更改为.Center,同时更改视图的大小,但这不起作用,因为视图的大小不合适。
我首先想到的解决方案是在这个UIImageView“后面”创建另一个UIView,并给它一个backgroundColor 来模仿边框的效果。我还想过创建一个UImageView 的自定义子类。但是,这两种操作都涉及基于视图的frame 进行计算。我遇到了很多问题,frame 没有在适当的时间由 AutoLayout 设置,等等。
想到的其他事情是以数字方式为图像添加边框或将图像定位在UIImageView 的特定部分。 (我对后者的尝试是imageView.layer.contentsRect = CGRectInset(imageView.bounds, 4, 4),这导致了一个奇怪的像素化图像。)
感觉应该有一种比创建新类或视图更简单的方法。任何帮助表示赞赏。
【问题讨论】:
-
您是否尝试更改
UIImage的大小并将其放入UIImageView,哪个背景颜色更改为边框颜色?还将contentMode设置为居中。如果您使用 imageview 裁剪图像,这可能会起作用。
标签: ios swift layout uiview autolayout