在我的应用程序中,我有一些自定义标题(字体不是字体)存储在png中,我想将其作为导航的标题。我希望标题中的字母对于每个不同的视图控制器都具有相同的大小,因此在插图画家中我努力使它具有相同的大小和宽度(提供空白以考虑更短的字符串)。我做了以下事情:
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SelectAnAlbumTitleLettering"]];
titleImageView.contentMode = UIViewContentModeCenter;
self.navigationItem.titleView = titleImageView;
[titleImageView release];
似乎图像是根据每个navigationBar
上包含的元素(即后退按钮,右按钮等)任意调整大小和定位的。
我想知道,我怎样才能控制titleView
所以我可以让它实现我想要的大小和位置,因此不会随意调整大小/重新定位。
答案 0 :(得分:42)
不使用图像视图作为标题视图,而是创建包含图像视图的另一个视图。将那个视图设置为导航项的标题视图;现在您可以在标题视图中自由调整图像视图的帧。
答案 1 :(得分:31)
您可以控制UINavigationbar titleview的大小和位置。不要直接将imageview设置为titleview。而是创建一个自定义UIView,然后根据您的要求设置其框架,并将titleImageView添加为其子视图。
UIView *backView =[[UIView alloc] initWithFrame:CGRectMake(0, 0, 200, 40)];// Here you can set View width and height as per your requirement for displaying titleImageView position in navigationbar
[backView setBackgroundColor:[UIColor greenColor]];
UIImageView *titleImageView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"SelectAnAlbumTitleLettering"]];
titleImageView.frame = CGRectMake(45, 5,titleImageView.frame.size.width , titleImageView.frame.size.height); // Here I am passing origin as (45,5) but can pass them as your requirement.
[backView addSubview:titleImageView];
//titleImageView.contentMode = UIViewContentModeCenter;
self.navigationItem.titleView = backView;
希望它对你有所帮助。
答案 2 :(得分:12)
在Swift中,你可以这样做:
var titleView = UIView(frame: CGRectMake(0, 0, 100, 40))
var titleImageView = UIImageView(image: UIImage(named: "cocolife"))
titleImageView.frame = CGRectMake(0, 0, titleView.frame.width, titleView.frame.height)
titleView.addSubview(titleImageView)
navigationItem.titleView = titleView
答案 3 :(得分:0)
更新的Swift4代码:
var titleView = UIView(frame: CGRect(x: 0, y: 0, width: 100, height: 40))
var titleImageView = UIImageView(image: UIImage(named: "headerlogo"))
titleImageView.frame = CGRect(x: 0, y: 0, width: titleView.frame.width, height: titleView.frame.height)
titleView.addSubview(titleImageView)
navigationItem.titleView = titleView