Open churabou opened 6 years ago
システム定義か色
定義済みの色
xcodeの警告出るけどまだ古いまま。
self.backgroundView.backgroundColor = UIColor.gray()
self.backgroundView.tintColor = UIColor.blue()
色空間
UIColor.clearは
class ViewController: UIViewController {
private lazy var imageView: UIView = {
let v = UIView()
v.backgroundColor = .red
v.frame = view.bounds.insetBy(dx: 50, dy: 150)
return v
}()
private lazy var maskLayer: CAShapeLayer = {
let l = CAShapeLayer()
l.fillRule = kCAFillRuleEvenOdd
l.fillColor = UIColor.black.cgColor
return l
}()
private lazy var maskView: MaskView = {
let v = MaskView()
v.backgroundColor = .black
v.frame = imageView.bounds
v.addGestureRecognizer(pan)
v.layer.mask = maskLayer
return v
}()
private lazy var pan: UIPanGestureRecognizer = {
let p = UIPanGestureRecognizer(target: self, action: #selector(move))
return p
}()
@objc func move(_ sender: UIPanGestureRecognizer) {
let location = sender.location(in: imageView)
updateMask(location)
}
func updateMask(_ center: CGPoint) {
let maskPath = UIBezierPath(rect: maskView.bounds)
let r: CGFloat = 50
maskPath.append(UIBezierPath(ovalIn: CGRect(x: center.x-r,
y: center.y-r,
width: 2*r,
height: 2*r)))
maskLayer.path = maskPath.cgPath
}
override func viewDidLoad() {
view.addSubview(imageView)
imageView.addSubview(maskView)
updateMask(maskView.center)
}
}
UIView.mask = UIView() は UIView.layer.mask = UIView().layer.mask と同値じゃないの?
class MaskView: UIView { override class var layerClass: AnyClass { return CAShaperLayer.self } } にしてview.layer.mask = maskview.layerみたいにしてみたり
支店が左上。
maskLayerのframeとか変更しちゃダメでした。 ハマりました。溶けました。