我正在尝试在导航栏中显示我的徽标,但我无法让它适合所有不同尺寸的手机。我可以让它适合一个,它在另一个看起来很糟糕。这是我最接近它看起来很好的一切。有谁看到我怎么能让这个看起来更好?
UIImage *logo = [UIImage imageNamed:@"WTB_LOGO"];
UIView *headerView = [[UIView alloc] init];
headerView.frame = CGRectMake(0, 0, 225, 115);
UIImageView *imgView = [[UIImageView alloc] initWithImage:logo];
imgView.frame = CGRectMake(0, 0, 205, 115);
imgView.contentMode = UIViewContentModeScaleAspectFit;
[headerView addSubview:imgView];
self.navigationItem.titleView = headerView;
答案 0 :(得分:1)
如果我理解了这个问题,你的图片在headerView中没有正确居中。如果你想要的只是图像,根本不使用标题,titleView会自动居中。
self.navigationItem.titleView = imgView;
如果你有一个后退按钮,它将推动图像查看。以下是它的外观:
所以你必须让你的图像变得更小。
答案 1 :(得分:0)
您是否尝试过如下设置:
...
UIView *headerView = [[UIView alloc] init];
headerView.frame = CGRectMake(0, 0, 225, 115);
...
// same frame with the headerview
imgView.frame = headerView.frame;
// Note: should be `imgView.frame = headerView.frame;`
// `imgView.frame = CGRectMake(0, 0, 225, 115);` is different
//
// this also work if you are supporting multi-orientation
//
// or simply assign the imageView directly
self.navigationItem.titleView = imgView;
// but the width is kinda broad `225` it will probably be push if you insert UIBarButtonItem to left/right
由于您使用的是UIViewContentModeScaleAspectFit
,因此它会自动缩放以适应框架。
如果您需要重新缩放图像,请输入代码。
+ (UIImage *)imageWithImage:(UIImage *)image scaleToSize:(CGSize)size
{
UIGraphicsBeginImageContextWithOptions(size, NO, 0.0);
[image drawInRect:CGRectMake(0, 0, size.width, size.height)];
UIImage *newImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return newImage;
}
希望这对你有所帮助。干杯! :)
答案 2 :(得分:0)
不确定为什么不只是试试这个:
self.navigationItem.titleView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"logo.png"]];
或者我错过了什么?