在数组xcode中舍入图像的角

时间:2016-07-29 14:50:31

标签: swift uiimageview

我试图围绕存储在阵列中的图像的角落,但我不完全确定它是否可能?

 var holeImages = [UIImage(named:"1.png"),UIImage(named:"2.png"),UIImage(named:"3.png")] 

 self.holeImages1.layer.cornerRadius = 10.0f;

2 个答案:

答案 0 :(得分:1)

不,这是不可能的。如果你希望对数组中的所有对象应用一些对象方法,你应该在循环中执行此操作,因为Array类型很可能没有这个方法:

for image in holeImages {
    image.performSomeMethod()
}

此外,您还可以编写Array扩展名来教授Array对象(例如UIImage)此方法:

extension Array where Element: UIImage {
    func performSomeMethod() {
        for element in self {
            element.performSomeMethod()
        }
    }
}

然后你可以做

holeImages.performSomeMethod()

但是让我们回到你的案子。 UIImage类型不具有名为layer的属性;而且,在没有上下文的情况下,图像的角落看起来很奇怪。通常在屏幕上显示图像时需要圆角,并且通常使用UIImageView容器。所以,你可能更喜欢这个容器的圆角而不是图像:

let imageView = UIImageView()
imageView.layer.cornerRadius = 10
imageView.contentMode = .ScaleAspectFill
imageView.clipsToBounds = true
imageView.image = holeImages.first

答案 1 :(得分:0)

您可能只想将角半径应用于呈现图像的layer的{​​{1}},而不是将图像自身舍入,例如:

UIImageView

但是如果你真的想要自己舍入图像,而不是舍入你呈现图像的imageView.layer.cornerRadius = 10 ,你还可以从UIImageView数组中构建一个新的圆形图像数组:

holeImages

您可以使用以下内容对图像进行舍入:

let roundedHoleImages = holeImages.map { return $0?.rounded(cornerRadius: 10) }

如果您将图像上传到某些网络服务并且想要上传带圆角的图像,则可以使用这些实际图像的舍入。但是,如果没有,圆形图像视图不仅更容易,而且避免了由不同尺度的图像(特别是如果这些尺度与显示extension UIImage { /// Round the corners of an image /// /// - parameter cornerRadius: The `CGFloat` corner radius to apply to the images. /// /// - returns: The rounded image. func rounded(cornerRadius cornerRadius: CGFloat) -> UIImage? { let path = UIBezierPath(roundedRect: CGRect(x: 0, y: 0, width: size.width, height: size.height), cornerRadius: cornerRadius) UIGraphicsBeginImageContextWithOptions(size, false, scale) let context = UIGraphicsGetCurrentContext() CGContextAddPath(context, path.CGPath) CGContextClip(context) drawAtPoint(CGPointZero) let outputImage = UIGraphicsGetImageFromCurrentImageContext() UIGraphicsEndImageContext() return outputImage } } 不同)产生的问题,以及最小化创建单独的内存影响图像阵列。