Swift 3 & amp; IBInspectable solution: Вдохновленный решением Ade
Сначала создайте расширение UIView:
//
// UIView-Extension.swift
//
import Foundation
import UIKit
@IBDesignable
extension UIView {
// Shadow
@IBInspectable var shadow: Bool {
get {
return layer.shadowOpacity > 0.0
}
set {
if newValue == true {
self.addShadow()
}
}
}
fileprivate func addShadow(shadowColor: CGColor = UIColor.black.cgColor, shadowOffset: CGSize = CGSize(width: 3.0, height: 3.0), shadowOpacity: Float = 0.35, shadowRadius: CGFloat = 5.0) {
let layer = self.layer
layer.masksToBounds = false
layer.shadowColor = shadowColor
layer.shadowOffset = shadowOffset
layer.shadowRadius = shadowRadius
layer.shadowOpacity = shadowOpacity
layer.shadowPath = UIBezierPath(roundedRect: layer.bounds, cornerRadius: layer.cornerRadius).cgPath
let backgroundColor = self.backgroundColor?.cgColor
self.backgroundColor = nil
layer.backgroundColor = backgroundColor
}
// Corner radius
@IBInspectable var circle: Bool {
get {
return layer.cornerRadius == self.bounds.width*0.5
}
set {
if newValue == true {
self.cornerRadius = self.bounds.width*0.5
}
}
}
@IBInspectable var cornerRadius: CGFloat {
get {
return self.layer.cornerRadius
}
set {
self.layer.cornerRadius = newValue
}
}
// Borders
// Border width
@IBInspectable
public var borderWidth: CGFloat {
set {
layer.borderWidth = newValue
}
get {
return layer.borderWidth
}
}
// Border color
@IBInspectable
public var borderColor: UIColor? {
set {
layer.borderColor = newValue?.cgColor
}
get {
if let borderColor = layer.borderColor {
return UIColor(cgColor: borderColor)
}
return nil
}
}
}
Затем просто выберите свой UIView в настройке построителя интерфейса shadow ON и угловой радиус, как показано ниже:
Результат!
Давайте начнем с отличного изображения из блога Криса Олаха (очень рекомендуется прочитать между прочим):
[115 ] В повторяющейся нейронной сети у вас есть несколько повторений одной и той же ячейки. Вывод таков: вы берете какой-то вход (x 0 ), пропускаете его через ячейку, чтобы получить какой-то выходной сигнал 1 (изображен черной стрелкой справа на рисунке), затем передайте выходные данные 1 в качестве входных данных (возможно, добавив еще несколько входных компонентов - x 1 на изображении) в ту же ячейку, создав новый выходной выходной сигнал 2 , pass это снова как ввод в ту же ячейку (снова с возможно дополнительным входным компонентом x 2 ), производя вывод 3 и так далее.
Шаг по времени - это единичное вхождение ячейки, например, на первом временном шаге вы выводите выходные данные 1 , h 0 , на втором временном шаге вы выводите выходные данные 2 и так далее.