ios - 添加 UIImage 会忽略 UIImageView 框架并调整其大小

标签 ios swift uiimageview storyboard uinavigationitem

我目前正在尝试将图像添加到一个 View 的导航项中。在 View 的viewDidLoad()中,调用了一个函数,代码如下,类似于this post :

let logo = UIImage(named: "Menu_Logo")

let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 122, height: 26))
imageView.contentMode = .scaleAspectFit
imageView.clipsToBounds = true
imageView.image = logo

self.navigationItem.titleView = imageView

然而, View 并没有给我预期的大小,而是看起来像这样:

UIImageView expanded Inspector shows the size grew above the defined frame

从 UIImageView 中删除 UIImage 使 View 大小正确,如下所示:

UIImageView is sized like expected when no UIImage is set The expected size of 122/26 is displayed when inspecting the view

这对我来说似乎很奇怪,特别是因为我确实将内容模式设置为 .scaleAspectFit。关于将 UIImageView 添加为 navigationItem.titleView,我是否忘记了什么?

最佳答案

UINavigationBar 上,如果内容很大,标题 View 将采用其完整大小。

Resize the image rather than UIImageView as following with passing size (122, 26). This will solve your problem.

func imageResize(sizeChange: CGSize) -> UIImage {
    let hasAlpha = true
    let scale: CGFloat = 0.0 // Use scale factor of main screen

    UIGraphicsBeginImageContextWithOptions(sizeChange, !hasAlpha, scale)
    self.draw(in: CGRect(origin: CGPoint.zero, size: sizeChange))

    let scaledImage = UIGraphicsGetImageFromCurrentImageContext()
    return scaledImage!
}

关于ios - 添加 UIImage 会忽略 UIImageView 框架并调整其大小,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49813761/

相关文章:

ios - 标签栏上的自定义按钮呈现模态视图的最佳方式

ios - 放大 UIScrollView - 无法缩放到单个图像之外并滚动

iphone - 我想知道我的应用程序如何访问 ios 应用程序中的 SQLite 数据库

ios - 在包含部署目标 iOS 7.0 及更早版本的应用程序中使用嵌入式框架

iOS 10,QLPreview ViewController 不显示文件

iphone - Xcode iPhone编程: Loading a jpg into a UIImageView from URL

ios - UIImageView IOS中间的透明圆圈

ios - UIBarButton 不会显示在我的 UINavigationController 中

ios - 嵌入式@Binding 不会更改值

swift - 将不透明类型与关联类型一起使用