ios - Swift3 iOS - 导航 TitleView 中的圆形 ImageView 一直显示方形?

标签 ios swift uiimageview uinavigationitem titleview

我有一个圆形的 imageView,用于我的应用程序中的个人资料图片。我在整个应用程序的 tableView 单元格中和 View Controller 中的不同 View 中多次使用代码。个人资料图片始终显示为圆形。当我使用下面的代码将个人资料图片设置为在 navItem 的 titleView 内圆形时,它只显示为正方形。

为什么它在 navItem 的 titleView 中不显示圆形?

var url: String?//it's already set with some value

override func viewDidLoad() {
        super.viewDidLoad(){

        setTitleView(urlStr: url)
{

func setTitleView(urlStr: String?){

        let titleView = UIView()
        titleView.frame = CGRect(x: 0, y: 0, width: 44, height: 44)

        let containerView = UIView()
        containerView.translatesAutoresizingMaskIntoConstraints = false
        titleView.addSubview(containerView)

        let imageView = UIImageView()
        imageView.translatesAutoresizingMaskIntoConstraints = false
        imageView.contentMode = .scaleAspectFill
        imageView.layer.cornerRadius = imageView.frame.size.width / 2
        imageView.clipsToBounds = true
        imageView.layer.borderColor = UIColor.white.cgColor
        imageView.layer.borderWidth = 0.5
        imageView.backgroundColor = UIColor.white

        if let urlStr = urlStr{
            let url = URL(string: urlStr)
            imageView.sd_setImage(with: url!)
        }

        containerView.addSubview(imageView)

        imageView.leftAnchor.constraint(equalTo: containerView.leftAnchor).isActive = true
        imageView.centerYAnchor.constraint(equalTo: containerView.centerYAnchor).isActive = true
        imageView.widthAnchor.constraint(equalToConstant: 40).isActive = true
        imageView.heightAnchor.constraint(equalToConstant: 40).isActive = true

        containerView.centerXAnchor.constraint(equalTo: titleView.centerXAnchor).isActive = true
        containerView.centerYAnchor.constraint(equalTo: titleView.centerYAnchor).isActive = true

        navigationItem.titleView = titleView
}

最佳答案

看起来 imageView.layer.cornerRadius = imageView.frame.size.width/2 设置为 0imageView.frame.size.width 在这里等于0

代替 let imageView = UIImageView(),您可以在创建 imageView 时使用 let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width) 预定义框架: 40, 高度: 40))

关于ios - Swift3 iOS - 导航 TitleView 中的圆形 ImageView 一直显示方形?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45224875/

相关文章:

iphone - 如何通过 XCode/Organiser 访问 iPhone 上的文件

iphone - 如何在 iphone sdk 中包含文件 pcap.h?

swift - 从构造的名称中获取 Swift 变量的值

swift - 是否有替代Combine 的@Published 的替代方法,在它发生之后而不是之前发出值变化的信号?

iphone - 删除 CAKeyframeAnimation 不会释放内存

ios - 将多个 Storyboard与 TabBarController 一起使用

html - 如何通过 HTML 打开 iOS 共享菜单

ios - 如何使 ViewController 正确地从 nib 上的 viewDidLoad() 加载自身?

ios - UIImageView 的双色边框

ios - 调整图像大小保持纵横比