Swift 导航栏的titleView居中显示问题

今天在练习写微博的时候遇到一个问题:首页的导航栏titleView是自定义的UIButton,要让文字显示在图片的前面,这里重写了layoutSubViews()方法,也设置了sizeToFit();但是结果如下:

文字和标题没有亲密的在一起

这是跟着网上的视频一步步做的结果
想了一下:问题肯定是出在了layoutSubViews();


/// 重写布局方法  让图片在文字的后面

override func layoutSubviews() {

super.layoutSubviews()

// 判断是否有图标和标题

guard let imageView = imageView, let titleLabel = titleLabel else {

return

}

// 对应移动

titleLabel.frame = titleLabel.frame.offsetBy(dx: -imageView.bounds.width, dy: 0)

imageView.frame = imageView.frame.offsetBy(dx: titleLabel.bounds.width, dy: 0)

}

可以看到titleLabel.frame和imageView.frame分别以对方为参照移动。如图所示移动的量明显大了很多啊。所以试着分别调用了sizeToFit();

        // 设置图片和文字的尺寸
        titleLabel?.sizeToFit()
        imageView?.sizeToFit()
        // 设置button的sizeToFit 否则它不知道要如何显示
        sizeToFit()

结果完美了!

就是酱紫的
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容