Nav Bar Obj-C中的徽标

时间:2015-07-10 14:57:55

标签: ios objective-c uiimage uinavigationbar titleview

我正在尝试在导航栏中显示我的徽标,但我无法让它适合所有不同尺寸的手机。我可以让它适合一个,它在另一个看起来很糟糕。这是我最接近它看起来很好的一切。有谁看到我怎么能让这个看起来更好?

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;

3 个答案:

答案 0 :(得分:1)

如果我理解了这个问题,你的图片在headerView中没有正确居中。如果你想要的只是图像,根本不使用标题,titleView会自动居中。

self.navigationItem.titleView = imgView;

如果你有一个后退按钮,它将推动图像查看。以下是它的外观: enter image description here enter image description here

所以你必须让你的图像变得更小。

答案 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"]];

或者我错过了什么?