如何在navigationItem.titleView中调整UIImageView的大小

时间:2018-03-07 16:29:41

标签: objective-c uiimageview ios11

我正在尝试调整我放置在TableViewController的navigationItem.titleView中的图像的大小。我在TableViewController viewDidLoad中使用了以下代码来完成此任务:

UIImageView* iv = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];
iv.contentMode = UIViewContentModeScaleAspectFit;
UIImage* image = [UIImage imageNamed:@"logo.png"];
[iv setImage:image];
self.navigationItem.titleView = iv;

但是,图像似乎不受我设置的40 x 40帧的影响。结果如下:

navigation bar with large logo

图像明显超过我指定的40 x 40限制。 如何让图片不占用导航栏中的所有可用空间?我希望徽标更小,顶部和底部有一些填充。

1 个答案:

答案 0 :(得分:2)

您应该创建一个UIView,在其上添加您的徽标,然后使用此视图设置self.navigationItem.titleView。您可以在下面查看我的代码。

UIView *titleView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 40, 40)];

UIImageView *titleImageView = [[UIImageView alloc] initWithFrame:titleView.frame];
titleImageView.image = [UIImage imageNamed:@"logo.png"];;
titleImageView.contentMode = UIViewContentModeScaleAspectFit;

[titleView addSubview:titleImageView];

self.navigationItem.titleView = titleView;