Как установить изображение в круге в быстром
Как я могу сделать круговое изображение с быстрым?
My 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/
Ответы
Ответ 1
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
}
Если вы хотите это на расширение
import UIKit
extension UIImageView {
func makeRounded() {
self.layer.borderWidth = 1
self.layer.masksToBounds = false
self.layer.borderColor = UIColor.black.cgColor
self.layer.cornerRadius = self.frame.height / 2
self.clipsToBounds = true
}
}
Это все, что тебе нужно....
Ответ 2
Вы можете просто создать расширение:
import UIKit
extension UIImageView {
func setRounded() {
let radius = CGRectGetWidth(self.frame) / 2
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
}
}
и используйте его, как показано ниже:
imageView.setRounded()
Ответ 3
Основано в ответе @DanielQ
Свифт 4 и Свифт 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()
Ответ 4
Если вы хотите сделать циркуляр UIImageView в Swift, вы можете просто использовать этот код:
imageView.layer.cornerRadius = imageView.frame.height / 2
imageView.clipsToBounds = true
Ответ 5
Не знаю, помогло ли это кому-либо, но я некоторое время боролся с этой проблемой, ни один из ответов онлайн не помог мне. Для меня проблема заключалась в том, что у меня были разные высоты и ширины, установленные на изображении в раскадровке. Я пробовал каждое решение на стеке, и оказалось, что это было что-то простое. Как только я установил их как 200, мой профиль профиля круга был идеальным. Это был код в моем VC.
profileImage2.layer.cornerRadius = profileImage2.frame.size.width/2
profileImage2.clipsToBounds = true
Ответ 6
Для Swift 4:
import UIKit
extension UIImageView {
func makeRounded() {
let radius = self.frame.width/2.0
self.layer.cornerRadius = radius
self.layer.masksToBounds = true
}
}
Ответ 7
Все приведенные выше ответы не смогли решить проблему в моем случае. Мой 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;
}
Ответ 8
Этот способ является наименее дорогим и всегда сохраняет вид вашего изображения округленным:
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
viewDidLoad()
. Это не правильно, поскольку неясно, каким будет окончательный кадр.
Ответ 9
Сначала вам нужно установить равную ширину и высоту для получения Circular ImageView.Below. Я установил ширину и высоту как 100 100. Если вы хотите установить равную ширину и высоту в соответствии с вашим требуемым размером, задайте здесь.
var imageCircle = UIImageView(frame: CGRectMake(0, 0, 100, 100))
Затем вам нужно установить высоту /2 для углового радиуса
imageCircle.layer.cornerRadius = imageCircle.frame.size.height/2
imageCircle.layer.borderWidth = 1
imageCircle.layer.borderColor = UIColor.blueColor().CGColor
imageCircle.clipsToBounds = true
self.view.addSubview(imageCircle)
Ответ 10
Для разработчиков Swift3/Swift4:
let radius = yourImageView.frame.width / 2
yourImageView.layer.cornerRadius = radius
yourImageView.layer.masksToBounds = true
Ответ 11
struct CircleImage: View {
var image: Image
var body: some View {
image
.clipShape(Circle())
}
}
Это правильно для SwiftUI
Ответ 12
Загрузите и используйте Toucan из GitHub. Он предлагается в Swift. Умение онемение легко. Он также предлагает множество других эффектов изображения.
Ответ 13
// 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!)
Ответ 14
Если ваше изображение округлено, оно будет иметь высоту и ширину одинакового размера (например, 120). Вы просто берете половину этого номера и используете его в своем коде (image.layer.cornerRadius = 60).