图像尺寸为640 X 44,适用于iPad Portrait。由于某种原因,它显示为图案图像而不是拉伸。
iOS 6
答案 0 :(得分:19)
尝试以下方法来拉伸您的图片:
// load the background image navbar.png
UIImage *imageNavBar = [UIImage imageNamed:@"navbar"];
// set the image as stretchable and set into navbar globally
imageNavBar = [imageNavBar stretchableImageWithLeftCapWidth:0 topCapHeight:0];
[[UINavigationBar appearance] setBackgroundImage:imageNavBar forBarMetrics:UIBarMetricsDefault];
答案 1 :(得分:4)
原因是ipad的分辨率是1024x768。因此,你的图像宽度应为768
答案 2 :(得分:1)
一种方法是根据导航栏的宽度调整图像大小。
let navBackgroundImage:UIImage! = UIImage(named: "top_header_iPhone")
let navimg = navBackgroundImage.resizeImageWith(newSize: CGSize(width: UIScreen.main.bounds.size.width, height: navBackgroundImage.size.height))
UINavigationBar .appearance().setBackgroundImage(navimg, for:.default)
UINavigationBar.appearance().titleTextAttributes = [ NSFontAttributeName: UIFont(name: "FightingSpiritturbo", size: 23)!]
调整图像大小的功能是:
extension UIImage{
func resizeImageWith(newSize: CGSize) -> UIImage {
let horizontalRatio = newSize.width / size.width
let verticalRatio = newSize.height / size.height
let ratio = max(horizontalRatio, verticalRatio)
let newSize = CGSize(width: size.width * ratio, height: size.height * ratio)
UIGraphicsBeginImageContextWithOptions(newSize, true, 0)
draw(in: CGRect(origin: CGPoint(x: 0, y: 0), size: newSize))
let newImage = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
return newImage!
}
}