Slide 1

Slide 1 text

UIViewͷϨΠΞ΢τߋ৽ϝιουΛ੔ཧ͢Δ 2018/10/26 @2takaanthony85

Slide 2

Slide 2 text

who am I ? • ٢઒߉޿ʢTakahiro Yoshikawaʣ • @2takaanthony85 • 2೥໨ Swift, Go, JS… infrastructure

Slide 3

Slide 3 text

UIViewController΍UIViewͷϨΠΞ΢τʹ ؔΘΔॲཧͬͯͨ͘͞Μ͋Γ·͢ΑͶʁ

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

಄ͷத͍ͬͺ͍ ͍ͭɺͲ͏࢖͏ͷ͔ࠞཚɻɻɻ

Slide 7

Slide 7 text

No content

Slide 8

Slide 8 text

ࠓ೔࿩͢͜ͱ

Slide 9

Slide 9 text

UIViewͷϨΠΞ΢τͷϝιουΛ੔ཧ͢Δ

Slide 10

Slide 10 text

ΞδΣϯμ • ϝιουΛ੔ཧͯ͠ΈΔ • ݸʑͷϝιουΛཧղ͢Δ • ٙ໰఺ͷղফ • ·ͱΊ

Slide 11

Slide 11 text

ΞδΣϯμ • ϝιουΛ੔ཧͯ͠ΈΔ • ݸʑͷϝιουΛཧղ͢Δ • ٙ໰఺ͷղফ • ·ͱΊ

Slide 12

Slide 12 text

ࠓ೔ϑΥʔΧε͢Δ΋ͷ • updateConsraints() • setNeedsUpdateConstraints() • updateConstraintsIfNeeded() • layoutSubviews() • setNeedsLayout() • layoutIfNeeded()

Slide 13

Slide 13 text

1. ੍໿ͱϨΠΞ΢τͰ੔ཧ

Slide 14

Slide 14 text

੍໿ͱϨΠΞ΢τͰ੔ཧ ੍໿ ϨΠΞ΢τ updateConstraints() layoutSubviews() setNeedsUpdateConstraits() setNeedsLayout() updateConstraintsIfNeeded() layoutIfNeeded()

Slide 15

Slide 15 text

2. ໾ׂͰ੔ཧ

Slide 16

Slide 16 text

໾ׂͰ੔ཧ ੍໿ ϨΠΞ΢τ ߋ৽͢Δ΋ͷ updateConstraints() layoutSubviews() ߋ৽Λݺͼग़͢ ʢεέδϡʔϦϯάʣ setNeedsUpdateConstraits() setNeedsLayout() ߋ৽Λݺͼग़͢ ʢଈ࣌ʣ updateConstraintsIfNeeded() layoutIfNeeded()

Slide 17

Slide 17 text

ΞδΣϯμ • ϝιουΛ੔ཧͯ͠ΈΔ • ݸʑͷϝιουΛཧղ͢Δ • ٙ໰఺ͷղফ • ·ͱΊ

Slide 18

Slide 18 text

ΞδΣϯμ • ϝιουΛ੔ཧͯ͠ΈΔ • ݸʑͷϝιουΛཧղ͢Δ • ٙ໰఺ͷղফ • ·ͱΊ

Slide 19

Slide 19 text

੍໿ ϨΠΞ΢τ ߋ৽͢Δ΋ͷ updateConstraints() layoutSubviews() ߋ৽Λݺͼग़͢ ʢεέδϡʔϦϯάʣ setNeedsUpdateConstraits() setNeedsLayout() ߋ৽Λݺͼग़͢ ʢଈ࣌ʣ updateConstraintsIfNeeded() layoutIfNeeded()

Slide 20

Slide 20 text

੍໿ ϨΠΞ΢τ ߋ৽͢Δ΋ͷ updateConstraints() layoutSubviews() ߋ৽Λݺͼग़͢ ʢεέδϡʔϦϯάʣ setNeedsUpdateConstraits() setNeedsLayout() ߋ৽Λݺͼग़͢ ʢଈ࣌ʣ updateConstraintsIfNeeded() layoutIfNeeded()

Slide 21

Slide 21 text

updateConstraints() layoutSubviews() • UIComponentΛߋ৽͢Δͱ͜Ζ • ViewDidLoad()΍ ViewDidLayoutSubviews()ʹࣅͯΔ • ݺͼग़͢΋ͷͰ͸ͳ͍

Slide 22

Slide 22 text

੍໿ ϨΠΞ΢τ ߋ৽͢Δ΋ͷ updateConstraints() layoutSubviews() ߋ৽Λݺͼग़͢ ʢεέδϡʔϦϯάʣ setNeedsUpdateConstraits() setNeedsLayout() ߋ৽Λݺͼग़͢ ʢଈ࣌ʣ updateConstraintsIfNeeded() layoutIfNeeded()

Slide 23

Slide 23 text

੍໿ ϨΠΞ΢τ ߋ৽͢Δ΋ͷ updateConstraints() layoutSubviews() ߋ৽Λݺͼग़͢ ʢεέδϡʔϦϯάʣ setNeedsUpdateConstraits() setNeedsLayout() ߋ৽Λݺͼग़͢ ʢଈ࣌ʣ updateConstraintsIfNeeded() layoutIfNeeded()

Slide 24

Slide 24 text

setNeedsConstraints() setNeedsLayout() • updateConstraints(),layoutSubviews()͕ ࣮ߦ͞ΕΔΑ͏ʹεέδϡʔϦϯά͢Δ • ࣮ߦ͞ΕΔλΠϛϯά͸iOS͕ ϨΠΞ΢τΤϯδϯΛ࣮ߦ͢Δͷʹ͓೚ͤ • ViewControllerͳͲͰݺͼग़ͨΓ͢Δ

Slide 25

Slide 25 text

੍໿ ϨΠΞ΢τ ߋ৽͢Δ΋ͷ updateConstraints() layoutSubviews() ߋ৽Λݺͼग़͢ ʢεέδϡʔϦϯάʣ setNeedsUpdateConstraits() setNeedsLayout() ߋ৽Λݺͼग़͢ ʢଈ࣌ʣ updateConstraintsIfNeeded() layoutIfNeeded()

Slide 26

Slide 26 text

੍໿ ϨΠΞ΢τ ߋ৽͢Δ΋ͷ updateConstraints() layoutSubviews() ߋ৽Λݺͼग़͢ ʢεέδϡʔϦϯάʣ setNeedsUpdateConstraits() setNeedsLayout() ߋ৽Λݺͼग़͢ ʢଈ࣌ʣ updateConstraintsIfNeeded() layoutIfNeeded()

Slide 27

Slide 27 text

updateConstraintsIfNeeded() layoutIfNeeded() • updateConstraints(),layoutSubviews()͕͢ ͙ʹ࣮ߦ͞ΕΔΑ͏ʹݺͼग़͢ • setNeedsConstraints()΍setNeedsLayout() ΑΓύϑΥʔϚϯεѱ • ࣮ߦޙʹผͷॲཧΛ૸Β͍ͤͨͱ͖༻

Slide 28

Slide 28 text

ಈ͔ͯ͠੔ཧͯ͠ΈΔ

Slide 29

Slide 29 text

ߏ੒ ਌View(VC) ࢠView Component

Slide 30

Slide 30 text

Layout

Slide 31

Slide 31 text

Layout wࢠ7JFX $VTUPN7JFX ͷ MBZPVU4VC7JFXT͕ݺͼग़͞ΕΔ ʢ਌ 7$ ͷํ͸ݺͼग़͞Εͳ͍ʣ

Slide 32

Slide 32 text

Layout

Slide 33

Slide 33 text

Layout wࢠ7JFX $VTUPN7JFX ͸εέδϡʔ Ϧϯά͞Ε͍ͯͳ͍ͷͰɺݺͼग़͞Ε ͳ͍

Slide 34

Slide 34 text

Layout

Slide 35

Slide 35 text

Layout w਌ɺࢠͲͪΒ΋εέδϡʔϦϯά ͞ΕΔͯΔͷͰɺݺͼग़͞ΕΔ w਌͔Βࢠͷॱ൪Ͱॲཧ

Slide 36

Slide 36 text

Layout

Slide 37

Slide 37 text

Layout wεέδϡʔϦϯά͞Ε͍ͯΔ΋ͷͳ͍ ͷͰɺԿ΋ى͜Βͳ͍

Slide 38

Slide 38 text

Constraints

Slide 39

Slide 39 text

Constraints wࢠ7JFX $VTUPN7JFX ͷ VQEBUF$POTUSBJOUT͕ݺͼग़͞ΕΔ ʢ਌ 7$ ͷํ͸ݺͼग़͞Εͳ͍ʣ

Slide 40

Slide 40 text

Constraints

Slide 41

Slide 41 text

Constraints wࢠ7JFX $VTUPN7JFX ͸εέδϡʔ Ϧϯά͞Ε͍ͯͳ͍ͷͰɺݺͼग़͞Ε ͳ͍

Slide 42

Slide 42 text

Constraints

Slide 43

Slide 43 text

Constraints w਌ɺࢠͲͪΒ΋εέδϡʔϦϯά͞Ε ΔͯΔͷͰɺݺͼग़͞ΕΔ wࢠ͔Β਌ͷॱ൪Ͱॲཧ

Slide 44

Slide 44 text

Constraints

Slide 45

Slide 45 text

Constraints wεέδϡʔϦϯά͞Ε͍ͯΔ΋ͷͳ͍ ͷͰɺԿ΋ى͜Βͳ͍

Slide 46

Slide 46 text

ΞδΣϯμ • ϝιουΛ੔ཧͯ͠ΈΔ • ݸʑͷϝιουΛཧղ͢Δ • ٙ໰఺ͷղফ • ·ͱΊ

Slide 47

Slide 47 text

ΞδΣϯμ • ϝιουΛ੔ཧͯ͠ΈΔ • ݸʑͷϝιουΛཧղ͢Δ • ٙ໰఺ͷղফ • ·ͱΊ

Slide 48

Slide 48 text

ٙ໰ʹࢥͬͨ͜ͱ 1. setNeedsLayout()Λݺͼग़ͨ͠Βɺ layoutIfNeeded()Λݺͼग़͞ͳ͍ͱ͍͚ ͳ͍ͷ͔ʁ 2. updateConstraints()ݺͼग़͞ΕͨΒɺ layoutSubviews()ݺͼग़͞ΕΔͷ͔ʁ 3. ͦ΋ͦ΋͜Ε࢖Θͳͯ͘΋͍͍ͷͰ͸ʁ

Slide 49

Slide 49 text

ٙ໰ʹࢥͬͨ͜ͱ 1. setNeedsLayout()Λݺͼग़ͨ͠Βɺ layoutIfNeeded()Λݺͼग़͞ͳ͍ͱ͍͚ ͳ͍ͷ͔ʁ 2. updateConstraints()ݺͼग़͞ΕͨΒɺ layoutSubviews()ݺͼग़͞ΕΔͷ͔ʁ 3. ͦ΋ͦ΋͜Ε࢖Θͳͯ͘΋͍͍ͷͰ͸ʁ

Slide 50

Slide 50 text

1 A.ηοτͰ࢖༻͠ͳ͍͍ͯ͘ setNeedsLayout()ͷ৔߹ͷ࣮ߦλΠϛϯά͸ γεςϜʹґଘ͢Δ΋ͷ͕ͩɺ λΠϛϯάͷࠩ͸΄΅ͳ͔ͬͨɻ

Slide 51

Slide 51 text

ٙ໰ʹࢥͬͨ͜ͱ 1. setNeedsLayout()Λݺͼग़ͨ͠Βɺ layoutIfNeeded()Λݺͼग़͞ͳ͍ͱ͍͚ ͳ͍ͷ͔ʁ 2. updateConstraints()ݺͼग़͞ΕͨΒɺ layoutSubviews()ݺͼग़͞ΕΔͷ͔ʁ 3. ͦ΋ͦ΋͜Ε࢖Θͳͯ͘΋͍͍ͷͰ͸ʁ

Slide 52

Slide 52 text

ٙ໰ʹࢥͬͨ͜ͱ 1. setNeedsLayout()Λݺͼग़ͨ͠Βɺ layoutIfNeeded()Λݺͼग़͞ͳ͍ͱ͍͚ ͳ͍ͷ͔ʁ 2. updateConstraints()ݺͼग़͞ΕͨΒɺ layoutSubviews()ݺͼग़͞ΕΔͷ͔ʁ 3. ͦ΋ͦ΋͜Ε࢖Θͳͯ͘΋͍͍ͷͰ͸ʁ

Slide 53

Slide 53 text

2 A.ݺͼग़͞Εͳ͍ ͨͩ͠ɺviewDidLayoutSubviews()͸ ݺͼग़͞ΕΔͷͰɺ஫ҙ

Slide 54

Slide 54 text

ٙ໰ʹࢥͬͨ͜ͱ 1. setNeedsLayout()Λݺͼग़ͨ͠Βɺ layoutIfNeeded()Λݺͼग़͞ͳ͍ͱ͍͚ ͳ͍ͷ͔ʁ 2. updateConstraints()ݺͼग़͞ΕͨΒɺ layoutSubviews()ݺͼग़͞ΕΔͷ͔ʁ 3. ͦ΋ͦ΋͜Ε࢖Θͳͯ͘΋͍͍ͷͰ͸ʁ

Slide 55

Slide 55 text

ٙ໰ʹࢥͬͨ͜ͱ 1. setNeedsLayout()Λݺͼग़ͨ͠Βɺ layoutIfNeeded()Λݺͼग़͞ͳ͍ͱ͍͚ ͳ͍ͷ͔ʁ 2. updateConstraints()ݺͼग़͞ΕͨΒɺ layoutSubviews()ݺͼग़͞ΕΔͷ͔ʁ 3. ͦ΋ͦ΋͜Ε࢖Θͳͯ͘΋͍͍ͷͰ͸ʁ

Slide 56

Slide 56 text

2 A.ͦ͏͔΋͠Εͳ͍ ୯ҰͷίϯϙʔωϯτΛૢ࡞͢Δ͚ͩΈ͍ͨͳ ঢ়گͳΒ࢖Θͳͯ͘΋͍͍ ςΩετͷ௕͞ʹΑͬͯUILabelΛม͑Δ Ͱ͋ͬͨΓɺෳࡶͳUIͷߏ੒ͷ৔߹͕࢖͍ॴ

Slide 57

Slide 57 text

ΞδΣϯμ • ϝιουΛ੔ཧͯ͠ΈΔ • ݸʑͷϝιουΛཧղ͢Δ • ٙ໰఺ͷղফ • ·ͱΊ

Slide 58

Slide 58 text

ΞδΣϯμ • ϝιουΛ੔ཧͯ͠ΈΔ • ݸʑͷϝιουΛཧղ͢Δ • ٙ໰఺ͷղফ • ·ͱΊ

Slide 59

Slide 59 text

·ͱΊʢ݁ہͲͷ৔໘Ͱ࢖͏͔ʣ 1. ಈతʹUIͷมߋ͕͋Δͱ͖ →ඞཁ࠷௿ݶͰ͋ͱ͸iOSʹ೚ͤΔ 2. ෳࡶͳUIߏ੒ͷͱ͖ →VCͱ੾Γ෼͚ͨΓͯ͠ίʔυΛεοΩϦ

Slide 60

Slide 60 text

͝੩ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ɻ