ios - 未在自定义 UIButton 上设置图像
问题描述
所以我试图在我的应用程序中创建一个包含用户图像的圆形导航栏按钮。我走的是子类化 UIButton 并创建自己的自定义类的路线。
一切都很好,除了我尝试抓取图像的部分。我使用 alamofire 根据从 firebase 获得的 URL 获取图像,但是按钮是蓝色的?没有图像
我在我的代码中做错了什么吗
import UIKit
import Firebase
import AlamofireImage
import Alamofire
class CircularNavButton: UIButton {
var userHandle: DatabaseHandle = 0
var userRef: DatabaseReference?
override init(frame: CGRect) {
super.init(frame: frame)
setupView()
}
required init?(coder aDecoder: NSCoder) {
fatalError("init(coder:) has not been implemented")
}
@objc func setupView(){
observeUser()
}
@objc func observeUser(){
self.userHandle = UserService.observeProfile(for: User.current, completion: { (userRef, user, nil) in
self.userRef = userRef
guard let userProfilePic = user?.profilePic else{
return
}
Alamofire.request(userProfilePic).responseImage { response in
debugPrint(response)
if let image = response.result.value {
self.setImage(image, for: .normal)
print("image downloaded: \(image)")
}
}
})
}
deinit {
userRef?.removeObserver(withHandle: userHandle)
}
}
下面是我将它添加到导航栏时的初始化
@objc func setupCircularNavButton(){
let image = #imageLiteral(resourceName: "sports").withRenderingMode(.alwaysOriginal)
let customView = CircularNavButton(type: .system)
customView.addTarget(self, action: #selector(showMenu), for: .touchUpInside)
customView.imageView?.contentMode = .scaleToFill
customView.layer.cornerRadius = 15
customView.clipsToBounds = true
customView.widthAnchor.constraint(equalToConstant: 30).isActive = true
customView.heightAnchor.constraint(equalToConstant: 30).isActive = true
let barButtonItem = UIBarButtonItem(customView: customView)
navigationItem.rightBarButtonItems?.insert(barButtonItem, at: 0)
}
解决方案
因此,当我像这样初始化它时,我可以通过将按钮类型设置为自定义来解决这个问题
let customView = CircularNavButton(type: .custom)
推荐阅读
- webpack - Webpack v4 长期支持?
- r - 使用 tidymodels 运行多个回归模型
- android - 无法使用证书 (.cer) 验证签名 XML
- angular - TypeError:无法读取未定义的属性'of'
- c# - 另一个“运行所选代码生成器时出错:”和“包还原失败。回滚包更改“(解决方案名称)
- html - 使用 CSS 在图像上居中对齐内容
- javascript - 慢速模式命令
- jenkins - github 操作 - 结帐操作中的问题
- reactjs - 他们有什么方法可以访问从 shell 脚本到 React JS 应用程序的参数吗?
- excel - 复制粘贴使用范围的列