Решение Simple Swift 3.2 / 4, основанное на ответе Ade без каких-либо дополнительных подсмотров, подклассификации или дополнительного скриптинга:
extension UIView {
func addShadow(offset: CGSize, color: UIColor, radius: CGFloat, opacity: Float) {
layer.masksToBounds = false
layer.shadowOffset = offset
layer.shadowColor = color.cgColor
layer.shadowRadius = radius
layer.shadowOpacity = opacity
let backgroundCGColor = backgroundColor?.cgColor
backgroundColor = nil
layer.backgroundColor = backgroundCGColor
}
}
Обратите внимание, что вы должны настроить свое представление с помощью угла радиус и другие свойства перед вызовом addShadow
.
Вызвать это прямо из viewDidLoad
следующим образом:
btnBottom.addShadow(offset: CGSize.init(width: 0, height: 3), color: UIColor.black, radius: 2.0, opacity: 0.35)
Конечный результат:
Супер легко и просто!
Похоже, вы используете более старый синтаксис. Я не верю, что taskname
больше поддерживается, например.
Вот файл tasks.json, который я использую, и оба метода вызова команд gulp работают. (Вы упомянули task.json
, я предполагаю, что это опечатка, это tasks.json
)
{
"version": "2.0.0",
"tasks": [
{
"label": "Start server and process files",
"command": "gulp",
"args": [
"sync"
],
"type": "shell",
"options": {
"cwd": "${workspaceRoot}"
}
},
{
"label": "Gulp: Start server only",
"type": "gulp",
"task": "serve",
"problemMatcher": []
},
{
"label": "Gulp: watch",
"type": "gulp",
"task": "watch",
"problemMatcher": []
}
}
Похоже, вы также хотите:
"group": "build",
в каждой из ваших задач - заменяет синтаксис isBuildCommand
, который вы использовали выше.
И:
"presentation": {
"reveal": "always",
},
вместо синтаксиса showoutput
.