UIレンダリングの仕組みを知る
potatotips #75 iOS/Android開発Tips共有会 https://potatotips.connpass.com/event/218185/
6*ϨϯμϦϯάͷΈΛΔӉࠤݟެี1/19
View Slide
Ӊࠤݟެีʢ!VTBNJLʣw J04"QQ։ൃ鲠鳫鲰鳃鲚ٕज़ಉਓࢽ鲗ॻ鱉鱫鲃鱞2/19
5FDI5BMLTͱw 88%$鲳鲻鲯鳟鳫Ҏ֎鱰鲇"QQMF鱑ެ։鱜鱫鱉鲐ಈը鱑鱇鲐w "QQMF%FWFMPQFS"QQ鲉鲭鲜鳀鱬ݟ鲑鲐w 鱢鱳த鱳5FDI5BMLT鱑鱏鲇鱜鲒鱉3/19
ࠓհ͢Δ5FDI5BMLTw 6*鲚鳃鳙鱅鲯鳟鳫鱳鲏鱏鲍鱸鳤鳫鲸鱅鳣鱅鳏鱰ର鱞鲐ݕ౼ʢ&YQMPSF6*"OJNBUJPO)JUDIFTBOE5IF3FOEFS-PPQʣw ݄鱰ެ։鱚鲑鱤w J04"QQ鱳鲱鲧鳥鱅鳣࣌鱳දࣔ鱳鲇鱤鱩鱒鲗վળ鱞鲐ํ๏4/19
)JUDIʢΓʣw 鳍鳤鱅鳘鱑༧ఆ鲍鲏鱔දࣔ鱚鲑鲐鱘鱭w ӈ鱳ྫ鱴'SBNF鱳දࣔ鱑鲑鱤w 'SBNF鱳දࣔ鱬Ұॠࢭ鲃鱨鱫ݟ鱍鲐5/19
3FOEFS-PPQw 鲷鲻鲹鲜鳑鳫鳀鱑"QQ鱰鱚鲑鱫鱐鲎ඳը鱑ऴ鲔鲐鲃鱬鱳鳏鳥鲳鲱鱳鱘鱭w ஈ֊鱰鱐鲑鲐w 74:/$鱰߹鲔鱠࣌ؒ鱰ॲཧ鱑ඞཁw J1IPOFJ1BENTʢ)[ʣw J1BE1SPNTʢ)[ʣ6/19
$PNNJUϑΣʔζw 3FOEFS-PPQ鱳ஈ֊w 鳤鲜鲚鲞鳀w 7JFX鱳ੜ鲉ஔw layoutSubviewsw දࣔw 7JFX鱳drawRectw 7JFX鱳֊ߏ鱴อ࣋鱚鲑鲐7/19
3FOEFSϑΣʔζw 3FOEFS-PPQ鱳ஈ֊w $PNNJU鱚鲑鱤7JFXߏ鲗ɺදࣔը໘鱭鱜鱫ඳը鱞鲐w 7JFX鱳ॏ鱲߹鲔鱠ɺ鲯鳛鳁鲞ɺ鲚鳃鳙鱅鲯鳟鳫鱯鱮w 3FOEFSTFSWFS鱴"QQ鱭鱴ผ鳏鳥鲳鲱鱥鱑ɺ։ൃऀ鱳8/19
දࣔw 3FOEFS-PPQ鱳ஈ֊w 鳤鳫鲸鳢鳫鲨鱚鲑鱤鲇鱳鲗දࣔ9/19
ฒྻ࣮ߦw 3FOEFS-PPQ鱴ฒྻ࣮ߦ鱚鲑鲐w 鲸鳎鳣鳈鲻鳍鲙鳢鳫鲨w දࣔ鱳ཪ鱬3FOEFS鳍鲟鱅鲲w 3FOEFS鱳ཪ鱬$PNNJU鳍鲟鱅鲲w ֤鳍鲟鱅鲲鱬੍࣌ؒݶ鲗क鲐ඞཁ鱑鱇鲐w क鲎鱯鱉鱭)JUDI鱑ൃੜ鱞鲐10/19
ڐ༰͞ΕΔൣғw )JUDIUJNFSBUJPw ඵ鱇鱤鲏ԿNT鱳IJUDI鱑鱇鲐鱐w NTT鱑ཧw NTTҎԼ鱯鲎(PPEw 鱩鲃鲏ඵ鱰ճఔ鱯鲎େৎw 鱢鲑鲗鱍鲐鱭ཁௐࠪ11/19
)JUDIͷௐࠪw *OTUSVNFOUT鲗鱨鱫ௐࠪ鱬鱒鲐w ӈ鱳ྫ鱬鱴ɺ$PNNJU鳍鲟鱅鲲鱰࣌ؒ鱑鱐鱐鱨鱫鱉鲐w ۩ମత鱰ԿNT鱐鱐鱨鱫鱉鲐鱐鲇ݟ鲑鲐12/19
ͷॲཧΛ୳͢w 鱚鲎鱰5JNF1SPpMFS鱬鱮鱳ؔ鱬࣌ؒ鱑鱐鱐鱨鱫鱉鲐鱐ݟ鲑鲐13/19
ͷॲཧΛվળ͢Δw $PMMFDUJPO7JFX$FMM鱬鱑鱇鱨鱤w prepareForReuse鱬ɺ$FMM鱳7JFX鲗আ鱜鱫ੜ鱜鱯鱏鱜鱫鱉鱤w 7JFX鲗࠶ར༻鱞鲐鲍鱋มߋ鱞鲑鱵鲍鱉14/19
$PNNJU)JUDIͷճආw લड़鱳)JUDI鱴$PNNJU鳍鲟鱅鲲鱬ൃੜ鱜鱤w $PNNJU鳍鲟鱅鲲鱬ؾ鲗鱩鱖鲐鱾鱒鱘鱭鱴ଞ鱰鲇鱇鲐w ྫ鳤鲜鲚鲞鳀ߋ৽鱳鱭鱒ɺlayoutIfNeeded鱳༻鲗ආ鱖鱫setNeedsLayout鱳༻鱑鱏鱞鱞鲆15/19
0⒎TDSFFO1BTTw 3FOEFS鳍鲟鱅鲲鱬࣌ؒ鱑鱐鱐鲐ࣄྫw ӈ鱳ྫ鱬鱴ɺӨ鱳ܗ鲗ௐ鱾鲐鱤鲆鱰ผ鱳ॴ鱰ਤܗ鲗ඳը鱜鱫鱉鲐16/19
3FOEFSͷΛൃݟw 9DPEF鱳7JFX%FCVHHFS鱬Օॴ鱭վળํ๏鲗ࢦఠ鱜鱫鱔鲑鲐w ӈ鱳ྫ鱬鱴ɺӨ鱳ඳը鱬鱑ࢦఠ鱚鲑鱫鱉鲐w վળํ๏鱭鱜鱫shadowPath鱳ࢦఆ鱑ఏҊ鱚鲑鱫鱉鲐17/19
ࢦఠՕॴͷվળw ఏҊ鱚鲑鱤鱭鱏鲏shadowPath鲗໌ࣔత鱰ࢦఆ鱞鲐w 鱘鲑鱬0GGTDSFFO1BTT鲗ݮ鲎鱜鱫3FOEFS鳍鲟鱅鲲鱳ॲཧ࣌ؒ鱑վળ鱜鱤18/19
ࢀߟʢ5FDI5BMLTʣw 6*鲚鳃鳙鱅鲯鳟鳫鱳鲏鱏鲍鱸鳤鳫鲸鱅鳣鱅鳏鱰ର鱞鲐ݕ౼ʢ&YQMPSF6*"OJNBUJPO)JUDIFTBOE5IF3FOEFS-PPQʣw 鲫鳗鲻鳀鳍鲟鱅鲲鱬鱳鲏鲗ݟ鱩鱖मਖ਼鱞鲐ʢ'JOEBOE'JY)JUDIFTJOUIF$PNNJU1IBTFʣw 鳤鳫鲸鳢鳫鲨鳍鲟鱅鲲鱬鱳鲏鲗ඥղ鱒ഉআ鱞鲐ʢ%FNZTUJGZBOE&MJNJOBUF)JUDIFTJOUIF3FOEFS19/19