- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我想在我的栏按钮项目图像中显示当前用户的个人资料图片。将显示默认图片,但不会显示用户的个人资料图片。
条形按钮图片声明:
lazy var leftButton: UIBarButtonItem = {
var image = UIImage.init(named: "icons8-kontakte-50")?.withRenderingMode(.alwaysOriginal)
let button = UIBarButtonItem.init(image: image, style: .plain, target: self, action: #selector(ConversationViewController.showProfile))
return button
}()
这里我观察当前用户,获取当前头像:
//left bar button image fetching
self.navigationItem.leftBarButtonItem = self.leftButton
self.tableView.tableFooterView = UIView.init(frame: CGRect.zero)
UserApi.shared.observeCurrentUser { (currentUser) in
self.currentUser = currentUser
guard let url = URL(string: currentUser.profilImageUrl!) else { return }
URLSession.shared.dataTask(with: url, completionHandler: { (data, response, error) in
if error == nil {
let image = UIImage.init(data: data!)
let contentSize = CGSize.init(width: 30, height: 30)
UIGraphicsBeginImageContextWithOptions(contentSize, false, 0.0)
let _ = UIBezierPath.init(roundedRect: CGRect.init(origin: CGPoint.zero, size: contentSize), cornerRadius: 14).addClip()
image!.draw(in: CGRect(origin: CGPoint.zero, size: contentSize))
let path = UIBezierPath.init(roundedRect: CGRect.init(origin: CGPoint.zero, size: contentSize), cornerRadius: 14)
path.lineWidth = 2
UIColor.white.setStroke()
path.stroke()
let finalImage:UIImage = UIGraphicsGetImageFromCurrentImageContext()!.withRenderingMode(.alwaysOriginal)
UIGraphicsEndImageContext()
self.leftButton.image = finalImage
}
})
预先感谢您的帮助!
最佳答案
数据任务完成 block 可以在任何线程上调用,但 UI 更新必须在主线程上完成。您需要分派(dispatch)回主线程以更新您的 UIBarButtonItem
。
URLSession.shared.dataTask(with: url) { (data, response, error) in
guard error == nil, let data = data, let image = UIImage(data: data) else { return }
let size = CGSize(width: 30, height: 30)
let rect = CGRect(origin: .zero, size: size)
let finalImage = UIGraphicsImageRenderer(size: size).image { _ in
let path = UIBezierPath(ovalIn: rect)
path.addClip()
image.draw(in: CGRect(origin: CGPoint.zero, size: size))
path.lineWidth = 2.0
UIColor.white.setStroke()
path.stroke()
}
DispatchQueue.main.async {
self.leftButton.image = finalImage.withRenderMode(.alwaysOriginal)
}
}.resume()
您还需要对数据任务调用 resume()
。
关于ios - 图像未显示在 BarButtonItem 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53658687/
我有一个在 TextView 中显示一些信息的屏幕,我希望用户能够编辑它。 现在,我在导航栏的右侧有一个编辑按钮,我在代码中创建如下: UIBarButtonItem *editButton = [
我有一个嵌入在 UINavigationController 中的 UITableView。我在 Storyboard中设置了一个 rightBarButtonItem 。如果我以正常方式继续,一切都
我想要自定义导航项目作为 facebook 应用程序。有两个按钮和一个 UISearchBar。按钮是 leftBarButtonItem 和 rightBarButtonItem。 UISearch
我的屏幕底部有一个工具栏。我想在上面有两个按钮,一个在左侧,一个在右侧。然而,与导航栏不同的是,有多个点并不位于导航栏的每一侧,而是从左到右彼此相邻堆叠。 我尝试使用固定分隔符,但是随着方向和设备的变
在 iOS 上,如果您没有手动在导航堆栈中设置栏按钮项目,则会为您添加一个带有前一个 Controller 的标题和后退箭头的项目。我只想保留箭头。例如如果我以前的 Controller 的标题是 H
我只是遇到了一个小问题。我找到这段代码: MKUserTrackingBarButtonItem *trackingButton = [[MKUserTrackingBarButtonItem all
我在右侧有一个简单的 + 按钮,用于将行添加到我的 tableView,但是该按钮没有出现。我是这样实现的 let AddButton = UIButton() AddButton.s
在我制作的应用程序中,我试图启用登录/注销到 Twitter。我想要它以便有一个 barbuttonitem 如果没有当前用户则说登录,或者如果有一个则说注销。我在 Storyboard上创建了两个按
我在整个项目中使用这段代码来更新我的 UIBarButtonItem 的标题。 在这个特定的类中,我有一个 NSFetchedResultsController,我想获取它的计数以设置为按钮的标题。
我得到了以下代码: - (id)init { if (self = [super init]) { self.title = @"please wait"; UIBarBu
我可以使用 setBackgroundVerticalPositionAdjustment 更改自定义栏按钮项的 y,但是如何更改水平位置? [viewController.navigationIte
我在我的导航 Controller 上制作了一个自定义栏按钮项目,它工作正常,但现在不行了。这是我用来制作自定义栏按钮的行: func addSlideMenuButton(){ l
如何转换此代码以使该按钮出现在工具栏中? : navigationItem.rightBarButtonItem = editButtonItem() 最佳答案 试试这个, let barBu
我想将 barButtonItem 添加到 tabBar 上,这样我就不必在屏幕顶部使用导航 Controller 。 我的 ViewController 嵌入到 tabBarController 中
这是我在 SO 上发表的第一篇文章。我是一名参加代码学校的程序员新手。 我的问题是我有一个用 Swift 编写的 iOS 应用程序。初始 View Controller 是一个带有嵌入式 TableV
是否可以更改 UINavigationBar 上的后退按钮并更改标题? 当我尝试设置 customView 属性时,我在默认按钮旁边看到了一张图片。 我用这个代码 self.navigationIte
如何更改按钮上的标题? 最佳答案 如果这来自导航 Controller ,则设置父 VC 的标题会将按钮的标题设置为该字符串值。 关于iphone - 更改 BarButtonItem 的标题,我们在
我有一个像这样初始化的按钮> self.button = [[UIBarButtonItem alloc] initWithBarButtonSystemItem:UIBarButtonSystemI
我需要以模态方式显示 PDF 文件,当我的用户单击某些按钮时,我将 PDF 加载到类中并以模态方式呈现它,现在我需要在 modalVC 上为用户提供 ab 按钮以关闭或返回所以我添加了RightBar
出于某种原因,当我将背景图像应用到 UIBarButtonItem 时,它会使角变成尖锐的矩形。如何使用 UIAppearance 解决这个问题? // bar button id barB
我是一名优秀的程序员,十分优秀!