Slide 1

Slide 1 text

CALayerΛݟ௚͢ ؔ੢ϞόΠϧΞϓϦݚڀձ #20 2016/11/28 େౡ ޫو

Slide 2

Slide 2 text

ࣗݾ঺հ • ΢ΣϒϦΦגࣜձࣾ • WEBΤϯδχΞ • ΞϓϦΤϯδχΞ
 ʢࣗশʣ • 8݄ʹΞϓϦΛ
 ϦϦʔε͠·ͨ͠ʂ

Slide 3

Slide 3 text

CALayer

Slide 4

Slide 4 text

Core Animation Layer • άϥϑΟοΫඳըͷج൫ • ΞχϝʔγϣϯॲཧΛ୲౰ • iOSʹ͸ඪ४Ͱ౥ࡌ͞Ε͍ͯΔ

Slide 5

Slide 5 text

UIViewʹαϙʔτ

Slide 6

Slide 6 text

Έͳ͞Μ΋Կؾͳ͘࢖͍ͬͯ Δ͔ͱࢥ͍·͢ɻ

Slide 7

Slide 7 text

CALayerͰ΍ͬͯΔ͸ͣ • ӨΛམͱ͢ • ࿮ઢΛ͚ͭΔ • ؙ֯ʹ͢Δ • ౳ʑɾɾɾ

Slide 8

Slide 8 text

CALayerΛ࢖༻ͨ͠খٕΛ ຊ೔͸঺հ͠·͢

Slide 9

Slide 9 text

1. CALayerΛܧঝͨ͠αϒΫϥε

Slide 10

Slide 10 text

CALayerΛܧঝͨ͠αϒΫϥε • CAEmitterLayer • CAGradientLayer • CAMetalLayer • CAEAGLLayer/ CAOpenGLLayer • CAReplicatorLayer • CAScrollLayer • CAShapeLayer • CATextLayer • CATiledLayer • CATransformLayer • QCCompositionLayer

Slide 11

Slide 11 text

CALayerΛܧঝͨ͠αϒΫϥε • CAEmitterLayer • CAGradientLayer • CAMetalLayer • CAEAGLLayer/ CAOpenGLLayer • CAReplicatorLayer • CAScrollLayer • CAShapeLayer • CATextLayer • CATiledLayer • CATransformLayer • QCCompositionLayer

Slide 12

Slide 12 text

CATextLayer override func viewDidLoad() { super.viewDidLoad() let textLayer = CATextLayer() textLayer.frame = textView.bounds let string = "Hello! Can I have a Tall Caramel Macchiato?" textLayer.string = string let fontName:CFString = "Noteworthy-Light" as CFString let fontSize:CGFloat = 14.0 textLayer.font = CTFontCreateWithName(fontName, fontSize, nil) textLayer.foregroundColor = UIColor.darkGray.cgColor textLayer.isWrapped = true textLayer.alignmentMode = kCAAlignmentLeft textLayer.contentsScale = UIScreen.main.scale textView.layer.addSublayer(textLayer) }

Slide 13

Slide 13 text

2. AVPlayerLayer

Slide 14

Slide 14 text

AVPlayerLayer • AVFoundationʹؚ·ΕΔCALayerαϒΫϥε • mp4Λ࠶ੜͰ͖Δ • Layerͱͯ͠࢖͏ͨΊʹҰ޻෉ඞཁ

Slide 15

Slide 15 text

AVPlayerLayer Class final class AVPlayerView : UIView { override public class var layerClass: Swift.AnyClass { get { return AVPlayerLayer.self } } fileprivate var playerLayer: AVPlayerLayer { return self.layer as! AVPlayerLayer } func player() -> AVPlayer { return playerLayer.player! } func setPlayer(_ player: AVPlayer) { playerLayer.player = player } func setVideoFillMode(_ fillMode: String) { playerLayer.videoGravity = fillMode } func videoFillMode() -> String { return playerLayer.videoGravity } }

Slide 16

Slide 16 text

AVPlayerLayer Layer let path = Bundle.main.path(forResource: "cat", ofType: "mp4") let fileURL = URL(fileURLWithPath: path!) let avAsset = AVURLAsset(url: fileURL, options: nil) let playerItem = AVPlayerItem(asset: avAsset) let videoPlayer = AVPlayer(playerItem: playerItem) let layer = playerView.layer as! AVPlayerLayer layer.videoGravity = AVLayerVideoGravityResizeAspect layer.player = videoPlayer videoPlayer.play()

Slide 17

Slide 17 text

3. ӨΛ಺ଆʹམͱ͢

Slide 18

Slide 18 text

αϯϓϧίʔυ let subLayer:CALayer = CALayer.init() subLayer.frame = image.bounds image.layer.addSublayer(subLayer) subLayer.masksToBounds = true let size:CGSize = subLayer.bounds.size var x:CGFloat = -10.0 var y:CGFloat = -10.0 let pathRef:CGMutablePath = CGMutablePath() pathRef.move(to: CGPoint(x: x, y: y)) x += size.width + 10.0 pathRef.addLine(to: CGPoint(x: x, y: y)) y += 10.0 pathRef.addLine(to: CGPoint(x: x, y: y)) x -= size.width pathRef.addLine(to: CGPoint(x: x, y: y)) y += size.height pathRef.addLine(to: CGPoint(x: x, y: y)) x -= 5.0 pathRef.addLine(to: CGPoint(x: x, y: y)) y -= size.height pathRef.addLine(to: CGPoint(x: x, y: y)) pathRef.closeSubpath() subLayer.shadowOffset = CGSize(width: 5, height: 5) subLayer.shadowColor = UIColor.black.cgColor subLayer.shadowOpacity = 0.5 subLayer.shadowPath = pathRef

Slide 19

Slide 19 text

Ͳ͏΍͍ͬͯΔ͔ 7JFX -BZFS - B Z F S

Slide 20

Slide 20 text

͋Γ͕ͱ͏͍͟͝·ͨ͠