Вы можете использовать данные два метода:
func drawImageWithProfilePic(pp: UIImage, image: UIImage) -> UIImage {
let imgView = UIImageView(image: image)
let picImgView = UIImageView(image: pp)
picImgView.frame = CGRect(x: 0, y: 0, width: 30, height: 30)
imgView.addSubview(picImgView)
picImgView.center.x = imgView.center.x
picImgView.center.y = imgView.center.y - 7
picImgView.layer.cornerRadius = picImgView.frame.width/2
picImgView.clipsToBounds = true
imgView.setNeedsLayout()
picImgView.setNeedsLayout()
let newImage = imageWithView(view: imgView)
return newImage
}
func imageWithView(view: UIView) -> UIImage {
var image: UIImage?
UIGraphicsBeginImageContextWithOptions(view.bounds.size, false, 0.0)
if let context = UIGraphicsGetCurrentContext() {
view.layer.render(in: context)
image = UIGraphicsGetImageFromCurrentImageContext()
UIGraphicsEndImageContext()
}
return image ?? UIImage()
}
Здесь pp
- изображение вашего профиля, а image
- значок изображения. Вы можете установить рамку профиля в соответствии с вами. Я пробовал это:
Редактировать
let marker = GMSMarker(position: coordinate)
marker.icon = drawImageWithProfilePic(pp: imgPP, image: img)
marker.appearAnimation = GMSMarkerAnimation.pop
marker.map = viewGoogleMap
и вот вывод:
Пропускать .
& ..
, можно использовать Dir::each_child
.
Dir.each_child('/path/to/dir') do |filename|
puts filename
end
Dir::children
возвраты массив имен файлов.
Как говорили другие, Dir :: foreach
здесь - хороший вариант. Однако обратите внимание, что Dir :: foreach
и Dir :: entries
всегда будут включать .
и ..
(текущий и родительский каталоги). Обычно вы не хотите работать с ними, поэтому вы можете использовать Dir :: each_child
или Dir :: children
(как , предложенный ma11hew28 ) или сделать что-нибудь например:
Dir.foreach('/path/to/dir') do |filename|
next if filename == '.' or filename == '..'
# Do work on the remaining files & directories
end
Dir :: foreach
и Dir :: entries
(а также Dir :: each_child
и Dir :: children
) также включать скрытые файлы и каталоги. Часто это именно то, что вы хотите, но если это не так, вам нужно что-то сделать, чтобы их пропустить.
В качестве альтернативы вы можете изучить Dir :: glob
, который обеспечивает простое сопоставление подстановочных знаков:
Dir.glob('/path/to/dir/*.rb') do |rb_filename|
# Do work on files & directories ending in .rb
end
Библиотека поиска предназначена специально для этой задачи: https://ruby-doc.org/stdlib-2.5.1/libdoc/find/rdoc/Find.html
require 'find'
Find.find(path) do |file|
# process
end
Это это стандартная библиотека Ruby, поэтому она должна быть доступна
Dir.foreach("/home/mydir") do |fname|
puts fname
end