如何让我用swift圈出画面?
我的ViewController:
import UIKit
import Foundation
class FriendsViewController : UIViewController{
@IBOutlet weak var profilPicture: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
profilPicture = UIImageView(frame: CGRectMake(0, 0, 100, 100))
}
}
我的profilPicture = UIImageView(frame: CGRectMake(0, 0, 100, 100))
什么都不做..
例如:http://www.appcoda.com/ios-programming-circular-image-calayer/
答案 0 :(得分:169)
import UIKit
class ViewController: UIViewController {
@IBOutlet weak var image: UIImageView!
override func viewDidLoad() {
super.viewDidLoad()
image.layer.borderWidth = 1
image.layer.masksToBounds = false
image.layer.borderColor = UIColor.black.cgColor
image.layer.cornerRadius = image.frame.height/2
image.clipsToBounds = true
}
这就是你所需要的......
答案 1 :(得分:34)
您可以简单地创建扩展程序:
import UIKit
extension UIImageView {
func setRounded() {
let radius = CGRectGetWidth(self.frame) / 2
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
}
}
并使用如下:
imageView.setRounded()
答案 2 :(得分:13)
基于@DanielQ的答案
Swift 4和Swift 3
import UIKit
extension UIImageView {
func setRounded() {
self.layer.cornerRadius = (self.frame.width / 2) //instead of let radius = CGRectGetWidth(self.frame) / 2
self.layer.masksToBounds = true
}
}
您可以在任何ViewController
中使用它:
imageView.setRounded()
答案 3 :(得分:11)
如果你的意思是你想在Swift中创建一个UIImageView循环,你可以使用这段代码:
imageView.layer.cornerRadius = imageView.frame.height / 2
imageView.clipsToBounds = true
答案 4 :(得分:6)
不知道这是否对任何人都有帮助,但我在这个问题上挣扎了一段时间,网上的答案都没有帮助我。对我来说问题是我在故事板中的图像上设置了不同的高度和宽度。我尝试了堆栈上的每个解决方案,事实证明它就是那么简单。一旦我将它们设置为200,我的圆形轮廓图像就完美了。这是我的VC中的代码。
profileImage2.layer.cornerRadius = profileImage2.frame.size.width/2
profileImage2.clipsToBounds = true
答案 5 :(得分:4)
Swift 4 :
import UIKit
extension UIImageView {
func makeRounded() {
let radius = self.frame.width/2.0
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
}
}
答案 6 :(得分:2)
上述所有答案都无法解决我的问题。我的ImageView
被放置在自定义的UITableViewCell
中。因此我也从这里调用layoutIfNeeded()
方法。例如:
class NameTableViewCell:UITableViewCell,UITextFieldDelegate { ...
override func awakeFromNib() {
self.layoutIfNeeded()
profileImageView.layoutIfNeeded()
profileImageView.isUserInteractionEnabled = true
let square = profileImageView.frame.size.width < profileImageView.frame.height ? CGSize(width: profileImageView.frame.size.width, height: profileImageView.frame.size.width) : CGSize(width: profileImageView.frame.size.height, height: profileImageView.frame.size.height)
profileImageView.addGestureRecognizer(tapGesture)
profileImageView.layer.cornerRadius = square.width/2
profileImageView.clipsToBounds = true;
}
答案 7 :(得分:1)
首先需要设置相等的宽度和高度来获取圆形ImageView.Below我将宽度和高度设置为100,100。如果要根据所需的大小设置相等的宽度和高度,请在此处设置。
web.config
然后你需要为角半径设置高度/ 2
var imageCircle = UIImageView(frame: CGRectMake(0, 0, 100, 100))
答案 8 :(得分:1)
对于Swift3 / Swift4开发人员:
let radius = yourImageView.frame.width / 2
yourImageView.layer.cornerRadius = radius
yourImageView.layer.masksToBounds = true
答案 9 :(得分:0)
如果您的图像是圆形的,它的高度和宽度将完全相同(即120)。您只需使用该数字的一半并在代码中使用它(image.layer.cornerRadius = 60)。
答案 10 :(得分:0)
Download and use Toucan from GitHub.它在Swift中提供。心里难以理解。它还提供了许多其他图像效果。
答案 11 :(得分:0)
这种方法是最便宜的方法,可以始终使图像视图保持四舍五入:
class RoundedImageView: UIImageView {
override init(frame: CGRect) {
super.init(frame: frame)
clipsToBounds = true
}
required init?(coder aDecoder: NSCoder) {
super.init(coder: aDecoder)
clipsToBounds = true
}
override func layoutSubviews() {
super.layoutSubviews()
assert(bounds.height == bounds.width, "The aspect ratio isn't 1/1. You can never round this image view!")
layer.cornerRadius = bounds.height / 2
}
}
其他答案是告诉您根据UIViewController
s viewDidLoad()
方法中设置的帧计算对视图进行四舍五入。 这是不正确的,因为不确定最终帧是什么。
答案 12 :(得分:0)
// code to make the image round
import UIKit
extension UIImageView {
public func maskCircle(anyImage: UIImage) {
self.contentMode = UIViewContentMode.ScaleAspectFill
self.layer.cornerRadius = self.frame.height / 2
self.layer.masksToBounds = false
self.clipsToBounds = true
// make square(* must to make circle),
// resize(reduce the kilobyte) and
// fix rotation.
// self.image = prepareImage(anyImage)
}
}
//从视图控制器调用函数
self.imgCircleSmallImage.maskCircle(imgCircleSmallImage.image!)
答案 13 :(得分:0)
struct CircleImage: View {
var image: Image
var body: some View {
image
.clipShape(Circle())
}
}
这对SwiftUI
答案 14 :(得分:0)
imageView.layer.cornerRadius = imageView.frame.height/2
imageView.clipToBounds = true