此代码在ios10中可以正常工作。我得到我的标签和一个图像按钮,该按钮是用户照片资料,圆形。.好的。但是当运行xcode 9
ios11模拟器时,我将其拉长了。当检查sim并获取视图并告诉xcode描述视图时,按钮帧必须为32x32,我将输出为170x32或类似的东西。
这是我的代码。
let labelbutton = UIButton( type: .system)
labelbutton.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside)
labelbutton.setTitleColor(UIColor.white, for: .normal)
labelbutton.contentHorizontalAlignment = .right
labelbutton.titleLabel?.font = UIFont.systemFont(ofSize: 18.00)
let button = UIButton(type: .custom)
button.addTarget(self, action:#selector(self.toLogin(_:)), for: .touchUpInside)
button.frame = CGRect(x: 0, y: 0, width: 32, height: 32)
button.setTitleColor(UIColor.white, for: .normal)
button.setTitleColor(UIColor.white, for: .highlighted)
var buttomItem : UIBarButtonItem = UIBarButtonItem()
buttomItem.customView = button
buttomItem.target = self
buttomItem.action = "ToLogin"
var labelItem : UIBarButtonItem = UIBarButtonItem()
labelItem.customView = labelbutton
labelItem.target = self
labelItem.action = "ToLogin"
if let user = PFUser.current() {
print("LOGIN : checkiando si existe usuario ")
labelbutton.setTitle(USERNAME, for: UIControlState.normal)
labelbutton.sizeToFit()
if(user["profile_photo_url"] != nil) {
print(" ENCONTRO PROFILE PHOTO URL NOT NIL Y ES \(user["profile_photo_url"])")
let photoURL = user["profile_photo_url"] as! String
let a = LoginService.sharedInstance
a.downloadImage(url: photoURL, complete: { (complete) in
if (complete) {
button.setImage(LoginService.sharedInstance.profile_photo! , for: UIControlState.normal)
button.layer.cornerRadius = 0.5 * button.bounds.size.width
// button.imageView!.contentMode = .scaleAspectFit
// button.imageView!.frame = CGRect(x: 0, y: 0, width: 40, height: 40)
//button.imageView!.contentMode = .scaleAspectFit
//button.imageView!.clipsToBounds = true
//button.imageView!.layer.cornerRadius = 60
button.clipsToBounds = true
self.NavigationItem.rightBarButtonItems = [buttomItem,labelItem]
}
})
} else {
self.NavigationItem.rightBarButtonItem = labelItem
}
print(" EL FRAME DEL BUTTON ES \(button.frame)")
} else {
labelbutton.setTitle("Login", for: UIControlState.normal)
labelbutton.sizeToFit()
self.NavigationItem.rightBarButtonItem = labelItem
}
原因
出现问题是因为从ios 11 UIBarButtonItem
使用自动布局而不是处理帧。
解
如果使用Xcode 9,则应为此图像按钮添加宽度约束。
button.widthAnchor.constraint(equalToConstant: 32.0).isActive = true
button.heightAnchor.constraint(equalToConstant: 32.0).isActive = true
聚苯乙烯
button
不是UIBarButtonItem
,它在UIButton
内部UIBarButtonItem
。您不应为设置约束UIBarButtonItem
,而应为其中的元素设置约束。
问题内容: 我想在导航栏的左侧快速显示图像。 我尝试添加导航栏按钮项并在那里设置图像。 问题是我必须使用非常小的图像才能使其很好地适应导航栏。但是制作如此小的图像会导致像素化,特别是在较大的手机iPhone 6和6 Plus上。 有没有一种方法可以使用高质量的图像,然后将框架设置为适合导航栏的边界? 我的尝试: 我尝试先将框架放在图像上,然后再放在条形按钮项上。但这抛出了一个错误: 没有更多上下文
问题内容: 我正在尝试在控制器的导航栏中设置后退按钮图像,这是viewDidLoad()中的代码: 我试图将它们放到viewWillLoad中,但是得到了同样的错误 控制台出现错误消息: 我不知道哪一部分出了问题。似乎back_img不是nil,但我收到错误消息说它为nil 谢谢! 问题答案: 我已经研究了示例代码。1)在情节提要中创建一个条形按钮项。2)使用IBOutlet将按钮链接到控制器3)
使用LeftBarItems和RightBarItems时,我遇到过过多的UIBarButtonItem填充/间距(请参见下图)。UIBarButtonims上使用的图标不包含额外的填充。我想知道是什么原因造成的?
我一直在尝试为我的应用程序获得一个透明的导航栏,但我已经尝试到目前为止,并没有给我的结果,我正在寻找。 作为一个参考示例,下面是“Play Store”导航栏的外观: 注意,它是一个黑暗但透明的颜色。 我在应用程序中尝试了以下内容: 我已经将我的主题和单个支架的背景颜色设置为深色,但我的导航栏仍然是白色的,如下图所示: 正如你在上图中看到的,状态栏接受它的透明颜色,并尊重应用背景,但导航栏不接受。
ap.hideOptionButton() 隐藏导航栏右侧按钮。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <button class="btn btn-default">显示多个按钮</button> <button
ap.showOptionButton() 显示导航栏右侧按钮。 代码示例 <script src="https://gw.alipayobjects.com/as/g/h5-lib/alipayjsapi/3.1.1/alipayjsapi.inc.min.js"></script> <button class="btn btn-default">显示 optionButton</button