layer
borderWidth
和borderColor
属性在视图内部绘制边框。雷米基特指出了here。
layer
shadow...
个属性不能用于创建边框,出现在所有四边 和是不透明,原因显示我here。
我未能在该问题中指明(以及我打开新问题的原因)是我希望边框在视图外 。正如所建议的,增加视图的frame
以补偿空间损失并不起作用;我使用了UIImageView
,因此即使frame
增加,image
仍会被裁剪。
另一个建议是将contentMode
的{{1}}更改为UIImageView
,并结合更改视图的大小,但这不会作为视图工作不是合适的尺寸。
我首先想到的解决方案是创建另一个.Center
""这个UIView
,并给它一个UIImageView
来模仿边界的效果。我还想过创建backgroundColor
的自定义子类。然而,这两个行动方案都涉及根据视图的UImageView
进行计算。我在适当的时候没有通过AutoLayout设置frame
等问题,等等。
我想到的其他事情是以数字方式为图像添加边框或将图像定位在frame
的特定部分。 (我对后者的尝试是UIImageView
,这导致了一个奇怪的像素化图像。)
真的感觉应该有一种比创建新类或视图更简单的方法。任何帮助赞赏。
答案 0 :(得分:0)
啊哈!将aykutt关于调整图像大小和更改conentMode
的评论,Paul Lynch关于调整图像大小的answer以及rene(拯救生命)answer关于如何做你的子视图的评论不是列在viewDidLayoutSubviews
:
override func viewDidLayoutSubviews() {
super.viewDidLayoutSubviews()
self.myContainer.setNeedsLayout()
self.myContainer.layoutIfNeeded()
var width: CGFloat = 4 //the same width used for the border of the imageView
var rect = CGRectInset(imageView.bounds, width, width)
var size = CGSizeMake(rect.width, rect.height)
UIGraphicsBeginImageContextWithOptions(size, false, 0.0)
image.drawInRect(CGRectMake(0, 0, size.width, size.height))
var new = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
self.imageView.contentMode = .Center
self.imageView.image = new
}