Arm1.ru

Элегантный extension для Notification.Name в Swift 3

В новой версии Swift 3 теперь другой конструктор для NSNotification (теперь уже просто Notification, префикс NS отбросили):

struct Config {
  static let ShouldCloseBrowserNotification = "ShouldCloseBrowserNotification"
}

let notification = Notification(
  name: Notification.Name(rawValue: Config.ShouldUpdateDialogNotification),
  object: nil,
  userInfo: nil
)
NotificationCenter.default.post(notification)

Выглядит параметр name не очень то красиво теперь. Зато можно расширить Notification.Name, чтобы было красиво:

extension Notification.Name {
  static let ShouldCloseBrowserNotification = Notification.Name("ShouldCloseBrowserNotification")
}

let notification = Notification(
  name: .ShouldUpdateDialogNotification,
  object: nil,
  userInfo: nil
)
NotificationCenter.default.post(notification)

comment comments

Про Mac App Store

Читал раньше упоминания о том, что Mac App Store is dead. Примерно месяц назад я запилил свой информер для яндексовской AppMetrica и залил в MAS. Стал наблюдать за чартами (недолго, правда). Собственно, на старте было 2 покупки (я даже знаю от кого обе). Результат меня удивил.

Сразу первое место в категории Бизнес в российском Mac App Store. Приятно, конечно, когда твоя иконка украшает список категорий.

Вот только всего 2 покупки говорят о том, что в Mac App Store прям очень мало покупают и скачивают приложения. Бесплатные, может быть, качают больше, но платные - точно очень мало. По крайней мере в России. Ни в какое сравнение с App Store с приложениями для iOS. Кроме того, приложение заняло 8-е место в общем топе магазина.

Значит дело не в категории. В других странах, скорее всего, приложений покупают больше, но в России - совсем мало. Правда, для macOS и пиратство развито гораздо сильнее, чем для iOS, потому что не нужен никакой геморой с jailbreak. Поэтому, наверное, люди и не очень часто покупают у нас. 

comment comments

Как сделать сочную иконку приложению

Секрет прост. Идём на iconfinder.com, ищем годную flat-иконку. Видимо, что она в довольно тусклых тонах. Качаем SVG, открываем в Sketch. Добавляем элементам градиенты и тени - получаем контрастную сочную иконку. По крайней мере, лучше, чем было :)

comment comments

AppMetric для macOS

Сделал за пару вечеров простой информер для macOS, который показывает статистику по приложениям из сервиса AppMetrica от Яндекса. Висит знаком в статус баре:

  • Выводит список всех приложений из AppMetrica.
  • Показывает количество пользователей, сессий и крэшей за сегодня.
  • Автоматически обновляет статистику в фоновом режиме.

Загрузить

comment comments

Блок (замыкание) как свойство класса в Swift

Пример использования блока (замыкания) как свойства класса в Swift. Инициализируется как nil.

class ChatViewController: UIViewController {

  var someClosure: (() -> Void)! // nil
  var anotherClosure: ((arg: Double) -> Bool)! // nil

  func executeClosures() {
    if self.someClosure != nil {
      self.someClosure()
    }

    if self.anotherClosure != nil {
      let boolResult = self.anotherClosure(arg: 2.0)
    }
  }

  func addSelfClosure(closure: (() -> Void)!) {
    self.someClosure = closure
  }

  func printSomething() {
    self.addSelfClosure() {
      print("closure called")
    }
    self.executeClosures() // prints: closure called
  }

}

comment comments

CompareShots v1.2

Вышло обновление CompareShots версии 1.2

Выпустил потому, что написал один из пользователей на почту просьбу скрывать логотип и текст после того, как выбрана картинка, т.к. иначе, если она не на полный экран, то они торчат из-за картинки или просвечивают. Попутно решил ещё прокачать приложение. Наконец-то пригодилась подписка на разные новые библиотеки. Поверх картинок теперь можно рисовать. Разными цветами и кистями разного размера. Один вечер - и такая красота :)

Загрузить

comment comments