Выполните итерации через каждый файл в одном каталоге

Вы можете использовать данные два метода:

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

и вот вывод:

enter image description here [114 ]

268
задан Nakilon 30 September 2013 в 03:59
поделиться

5 ответов

Пропускать . & .., можно использовать Dir::each_child .

Dir.each_child('/path/to/dir') do |filename|
  puts filename
end

Dir::children возвраты массив имен файлов.

0
ответ дан 23 November 2019 в 02:21
поделиться

Как говорили другие, 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
421
ответ дан 23 November 2019 в 02:21
поделиться

Библиотека поиска предназначена специально для этой задачи: https://ruby-doc.org/stdlib-2.5.1/libdoc/find/rdoc/Find.html

require 'find'
Find.find(path) do |file|
  # process
end

Это это стандартная библиотека Ruby, поэтому она должна быть доступна

13
ответ дан 23 November 2019 в 02:21
поделиться
Dir.new('/my/dir').each do |name|
  ...
end
3
ответ дан 23 November 2019 в 02:21
поделиться
Dir.foreach("/home/mydir") do |fname|
  puts fname
end
25
ответ дан 23 November 2019 в 02:21
поделиться
Другие вопросы по тегам:

Похожие вопросы: