Все ответы добавляются в этот очень часто задаваемый вопрос.
Так что, следуя традиции временного графика этого вопроса, вот мои 2 цента.
Я нашел перераспределение быстрее, чем слияние, в очень конкретном случае.
В моем приложении, когда количество файлов, которые мы оцениваем, ниже определенного порога, перераспределение работает быстрее.
Вот что я имею в виду
if(numFiles > 20)
df.coalesce(numFiles).write.mode(SaveMode.Overwrite).parquet(dest)
else
df.repartition(numFiles).write.mode(SaveMode.Overwrite).parquet(dest)
. В приведенном выше фрагменте, если мои файлы были меньше 20, coalesce продолжал навсегда заканчиваться, в то время как перераспределение было намного быстрее, и поэтому приведенный выше код .
Конечно, это число (20) будет зависеть от числа рабочих и количества данных.
Надеюсь, что это поможет.
Вы можете создать экземпляр UIButton, установить для него образ и заголовок, а затем создать свой UIBarButtonItem с ним:
let button = UIButton(type: .System)
button.setImage(UIImage(named: "YourImage"), forState: .Normal)
button.setTitle("YourTitle", forState: .Normal)
button.sizeToFit()
self.leftBarButton = UIBarButtonItem(customView: button)
Чтобы добавить действие:
button.addTarget(self, action: #selector(self.someAction), forControlEvents: .TouchUpInside)
, где self.someAction -
func someAction() {
}
Создайте UIButton, установите для него образ и заголовок и используйте его как пользовательский образ, чтобы сгенерировать его UIBarButtonItem(customView:)
.
Если вы хотите, чтобы изображение было справа от кнопку, вы можете установить semanticContentAttribute
на .forceRightToLeft
.
Пример Swift 4:
let view = UIView()
let button = UIButton(type: .system)
button.semanticContentAttribute = .forceRightToLeft
button.setImage(UIImage(named: "DocumentsIcon"), for: .normal)
button.setTitle("Documents", for: .normal)
button.addTarget(self, action: #selector(openDocuments), for: .touchUpInside)
button.sizeToFit()
view.addSubview(button)
view.frame = button.bounds
navigationItem.rightBarButtonItem = UIBarButtonItem(customView: view)
Swift 3:
let button = UIButton(type: .system)
button.setImage(UIImage(named: "categories_icon"), for: .normal)
button.setTitle("Categories", for: .normal)
button.addTarget(self, action: #selector(showCategories), for: .touchUpInside)
button.sizeToFit()
self.navigationItem.leftBarButtonItem = UIBarButtonItem(customView: button)