在左对齐的导航栏中添加徽标
Adding a logo in Navigation Bar that is left aligned
我对如何在左对齐的 NavigationBar 中获取图像感到困惑。我了解如何替换中心的标题。
基本上,我有一个嵌入在导航栏控制器中的视图控制器。在那个视图控制器中,我在中间有一个搜索表单,在右边有一个栏按钮,我试图在左侧放置一个图像徽标。
下面是我所了解的如何放置图片,但如何让它左对齐?
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
imageView.contentMode = .ScaleAspectFit
let image = UIImage(named: "imageName")
imageView.image = image
navigationItem.titleView = imageView
创建一个带图像的 BarButton 项目。
如下所示将其作为左栏按钮项分配给导航栏。
Objective C
UIBarButtonItem *logo = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:"imageName"] style:UIBarButtonItemStylePlain target:self action:@selector(methodName)];
self.navigationItem.leftBarButtonItem = logo;
SWIFT
let logo = UIBarButtonItem(image: UIImage (named: "imageName"), style: UIBarButtonItemStyle.plain, target: self, action: methodName)
self.navigationItem.leftBarButtonItem = logo
希望对您有所帮助..
您可以将项目数组分配给 navigationBar
的 leftBarButtonItems
属性。您应该添加一个数组,因为左侧和徽标之间通常没有 space,这看起来不太好。这是一个例子:
func setUpUI() {
let logoImage = UIImage.init(named: "logoImage")
let logoImageView = UIImageView.init(image: logoImage)
logoImageView.frame = CGRectMake(-40, 0, 150, 25)
logoImageView.contentMode = .ScaleAspectFit
let imageItem = UIBarButtonItem.init(customView: logoImageView)
let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .FixedSpace, target: nil, action: nil)
negativeSpacer.width = -25
navigationItem.leftBarButtonItems = [negativeSpacer, imageItem]
}
它左边的负 spacer 会把它推过来一点,你可以从那里调整它。
对于iOS11我们需要给BarButtomItem的image view添加约束
func addLeftBarIcon(named:String) {
let logoImage = UIImage.init(named: named)
let logoImageView = UIImageView.init(image: logoImage)
logoImageView.frame = CGRect(x:0.0,y:0.0, width:60,height:25.0)
logoImageView.contentMode = .scaleAspectFit
let imageItem = UIBarButtonItem.init(customView: logoImageView)
let widthConstraint = logoImageView.widthAnchor.constraint(equalToConstant: 60)
let heightConstraint = logoImageView.heightAnchor.constraint(equalToConstant: 25)
heightConstraint.isActive = true
widthConstraint.isActive = true
navigationItem.leftBarButtonItem = imageItem
}
祝一切顺利
根据@Warrior 的回答,
对于 Objective-C、iOS11+ 和徽标的相关布局。
// create Youtube icon imageView
UIImageView *youtubeImageView = [[UIImageView alloc] init];
youtubeImageView.translatesAutoresizingMaskIntoConstraints = false;
youtubeImageView.contentMode = UIViewContentModeScaleAspectFit;
youtubeImageView.image = [UIImage imageNamed:@"youtube_icon"];
UIBarButtonItem *imageItem = [[UIBarButtonItem alloc] initWithCustomView:youtubeImageView];
// set constraints
float width = self.view.frame.size.width * 0.3;
float height = width * 178 / 794; // width * 1/ratio
[youtubeImageView.widthAnchor constraintEqualToConstant:width].active = true;
[youtubeImageView.heightAnchor constraintEqualToConstant:height].active = true;
self.navigationItem.leftBarButtonItem = imageItem;
我对如何在左对齐的 NavigationBar 中获取图像感到困惑。我了解如何替换中心的标题。
基本上,我有一个嵌入在导航栏控制器中的视图控制器。在那个视图控制器中,我在中间有一个搜索表单,在右边有一个栏按钮,我试图在左侧放置一个图像徽标。
下面是我所了解的如何放置图片,但如何让它左对齐?
let imageView = UIImageView(frame: CGRect(x: 0, y: 0, width: 50, height: 50))
imageView.contentMode = .ScaleAspectFit
let image = UIImage(named: "imageName")
imageView.image = image
navigationItem.titleView = imageView
创建一个带图像的 BarButton 项目。
如下所示将其作为左栏按钮项分配给导航栏。
Objective C
UIBarButtonItem *logo = [[UIBarButtonItem alloc]initWithImage:[UIImage imageNamed:"imageName"] style:UIBarButtonItemStylePlain target:self action:@selector(methodName)];
self.navigationItem.leftBarButtonItem = logo;
SWIFT
let logo = UIBarButtonItem(image: UIImage (named: "imageName"), style: UIBarButtonItemStyle.plain, target: self, action: methodName)
self.navigationItem.leftBarButtonItem = logo
希望对您有所帮助..
您可以将项目数组分配给 navigationBar
的 leftBarButtonItems
属性。您应该添加一个数组,因为左侧和徽标之间通常没有 space,这看起来不太好。这是一个例子:
func setUpUI() {
let logoImage = UIImage.init(named: "logoImage")
let logoImageView = UIImageView.init(image: logoImage)
logoImageView.frame = CGRectMake(-40, 0, 150, 25)
logoImageView.contentMode = .ScaleAspectFit
let imageItem = UIBarButtonItem.init(customView: logoImageView)
let negativeSpacer = UIBarButtonItem.init(barButtonSystemItem: .FixedSpace, target: nil, action: nil)
negativeSpacer.width = -25
navigationItem.leftBarButtonItems = [negativeSpacer, imageItem]
}
它左边的负 spacer 会把它推过来一点,你可以从那里调整它。
对于iOS11我们需要给BarButtomItem的image view添加约束
func addLeftBarIcon(named:String) {
let logoImage = UIImage.init(named: named)
let logoImageView = UIImageView.init(image: logoImage)
logoImageView.frame = CGRect(x:0.0,y:0.0, width:60,height:25.0)
logoImageView.contentMode = .scaleAspectFit
let imageItem = UIBarButtonItem.init(customView: logoImageView)
let widthConstraint = logoImageView.widthAnchor.constraint(equalToConstant: 60)
let heightConstraint = logoImageView.heightAnchor.constraint(equalToConstant: 25)
heightConstraint.isActive = true
widthConstraint.isActive = true
navigationItem.leftBarButtonItem = imageItem
}
祝一切顺利
根据@Warrior 的回答,
对于 Objective-C、iOS11+ 和徽标的相关布局。
// create Youtube icon imageView
UIImageView *youtubeImageView = [[UIImageView alloc] init];
youtubeImageView.translatesAutoresizingMaskIntoConstraints = false;
youtubeImageView.contentMode = UIViewContentModeScaleAspectFit;
youtubeImageView.image = [UIImage imageNamed:@"youtube_icon"];
UIBarButtonItem *imageItem = [[UIBarButtonItem alloc] initWithCustomView:youtubeImageView];
// set constraints
float width = self.view.frame.size.width * 0.3;
float height = width * 178 / 794; // width * 1/ratio
[youtubeImageView.widthAnchor constraintEqualToConstant:width].active = true;
[youtubeImageView.heightAnchor constraintEqualToConstant:height].active = true;
self.navigationItem.leftBarButtonItem = imageItem;