iOS¿ª·¢¡«UI²¼¾Ö£¨Ò»£©³õ̽Size
Class
Ëæ×ÅiOS8ϵͳµÄ·¢²¼£¬Ò»¸öȫеÄÒ³ÃæUI²¼¾Ö¸ÅÄî³öÏÖ£¬Õâ¸öÐÂÌØÐÔ½«µß¸²°üÀ¨iOS7¼°Ö®Ç°°æ±¾µÄUI²¼¾Ö·½Ê½£¬Õâ¸öÐÂÌØÐÔ¾ÍÊÇSize
Class¡£Size ClassÅäºÏAuto Layout¿ÉÒÔ½â¾öËùÓУ¨°üÀ¨iPhone¼°iPad£©iOSÉ豸ÆÁÄ»³ß´ç¼°ÆÁÄ»ÐýתʱºòµÄUIÊÊÅäÎÊÌâ¡£
¶þ¡¢ÎªÊ²Ã´ÒªÊ¹ÓÃSize Class
Ö±µ½iPhone6·¢²¼ºó£¬Ä¿Ç°iOSÉ豸µÄÆÁÄ»³ß´çÒѾÓÐ4ÖÖÁË£¬Èçͼ£º

iPhone6û³öÏÖ֮ǰ£¬»¹¿ÉÒÔͨ¹ý´úÂëÀ´ÊÊÅäÁ½ÖֳߴçµÄUI£¬µ«iPhone6·¢²¼ºó£¬½¥½¥µÄ·¢ÏÖÒÔǰµÄ·½Ê½¿ÉÄÜÕæµÄÒªÌÔÌÁË£¬ÒòΪÒÔºó¿ÉÄÜ»¹ÒªÃæ¶Ô¸ü¶àµÄÆÁÄ»³ß´ç¡£ÏÔȻӲ±àÂëUIµÄFrameµÄʱ´úÒª¹ýÈ¥ÁË£¬ÒªÊ¹ÓÃAuto
LayoutÁË¡£
×Ô´ÓiOS6¿ªÊ¼¾ÍÒýÈëÁËAuto Layout£¬µ«Ò»Ö±Ã»ÓÃÍÆ¹ãʹÓã¬ÔÒòÓкܶࣨÀýÈ磺Auto Layout±¾Éí²»ÊǺܳÉÊì¡¢Ó²±àÂë¿ÉÒÔ½â¾öiPhone½öÓÐÁ½ÖÖÆÁÄ»³ß´çµÄUIÊÊÅä¡¢iPhoneÏîÄ¿ºÍiPadÏîÄ¿·Ö¿ªÀ´½øÐеȣ©¡£
Size ClassÊÇÅäºÏAuto LayoutÀ´Ê¹Óõģ¬ÈÃAuto Layout·½Ê½±äµÃ²»ÄÇô¸´ÔÓ¡£
Èý¡¢¸ÃÈçºÎʹÓÃSize Class
ҪʹÓÃSize Class£¬Ê×ÏÈÒª°²×°×îеÄXcode6£¬Ð½¨Ò»¸öSingle
View Application templateÏîÄ¿£¬Ñ¡ÔñMain.storyboard£> View£¬²é¿´InspectorÊôÐÔ£º

ĬÈÏSize Classes¾ÍÒѾʹÓÃÁË£¬µ±È»Èç¹û²»ÏëʹÓÃËüÒ²¿ÉÒԹصô£¬È»ºóʹÓþɵIJ¼¾Ö·½Ê½¡£µ«Èç¹ûÑ¡ÔñʹÓÃSize
Class£¬È»ºó¹ØµôAuto Layout£¬Xcode»áµ¯³öÒ»¸ö¾¯¸æ¿ò£º£¨ÉÔºó¾Í»áÃ÷°×Ϊʲô£¡£©

Ñ¡Ôñcancel£¬ÒòΪ½ÓÏÂÀ´ÒªÊ¹ÓÃSize Classes¡£
Size ClassesÆäʵ¾ÍÊǽ«iOSÉ豸ÆÁÄ»µÄSize½øÐзÖÀ࣬ÈçºÎ·ÖÀàµÄÄØ£¿
¶ÔÓÚiOSÉ豸£¨ÎÞÂÛiPhone»¹ÊÇiPad£©£¬¿í¶ÈºÍ¸ß¶È¶¼¸÷·ÖΪ3ÖÖÇé¿ö£º½ô´Õ£¨Compact£©¡¢¹æÔò£¨Regular£©¡¢ÈκΣ¨Any£©

ÆäÖС°ÈκΡ±£¨Any£©°üº¬½ô´Õ£¨Compact£©¡¢¹æÔò£¨Regular£©ÀàÐÍ¡£Èç¹ûÆÁÄ»¿í¶ÈÓÃw±íʾ£¬¸ß¶ÈÓÃh±íʾ£¬ÄÇôw£¨Regular£©£¯h£¨Regular£©×éºÏ¾ÍÊÇiPadÆÁÄ»³ß´ç£¨size£©µÄÀà±ð£¨class£©£¬ÎÞÂÛiPadºáÆÁ»¹ÊÇÊúÆÁ£¬ÆÁÄ»³ß´çÀà±ð¶¼ÊÇw£¨Regular£©£¯h£¨Regular£©£¬ÉÏͼ¿ÉÒÔºÜÇå³þµÄ±í´ï¡£
¹ÙÍøÒ²ÁоÙÁËһЩ£º




µ½ÕâÀïÓ¦¸ÃÃ÷°×ÁË£¬Size ClassesÊǽ«ÆÁÄ»³ß´çµÄÖÖÀà×öÁ˽øÒ»²½µÄ³éÏó¡£ÄÇÓÐÒ»¸öÎÊÌ⣬·ÖÀàµÄÓÐʲôÓ㿸ÃÔõôÓ𡣿
ÒÔǰΪ²»Í¬µÄiOSÉ豸³ß´ç»òÕßͬ³ß´çºáÊúÆÁ²»Í¬ÊÊÅäUI£¬¶¼Òª¸ù¾Ýʵ¼ÊÇé¿ö¶øÈ¥¼ÆËãframe¡£Ê¹ÓÃSize
ClassesÊǸù¾Ýµ±Ç°µÄÆÁÄ»sizeÀàÐͶøÊ¹ÓÃAuto Layout·½Ê½½øÐв¼¾ÖÁË£¬ÒªÞðÆú֮ǰ¼ÆËãframeµÄ˼·£¬¶ø¸ÄÓÃÏà¶Ô²¼¾ÖµÄ˼άȥ˼¿¼£¨Êµ¼ÊÉÏ»¹ÊÇÒª¼ÆËãframe£©¡£
¶øÇÒXcode6×î´óµÄÍ»ÆÆÒ²ÊÇÕâÀ²»ÔÚÐèÒª½¨Á¢²»Í¬³ß´çµÄstoryboardÁË£¬Ö»Òª½¨Á¢Ò»¸ö£¬È»ºóÐÞ¸ÄÆäviewµÄsize¾Í¿ÉÒÔ×ö¸÷ÖÖÆÁÄ»³ß´çµÄÊÊÅ䣬ÈçÏ£º
ÀýÈçÎÒÒª×öiPadÒ³ÃæÉè¼Æ£¬¾ÍÉèÖóÉw £¨Regular£©£¯h£¨Regular£©

È»ºóͬÑùµÄ¹¤³Ì£¬ÓÖÒª¼æÈݺáÆÁµÄiPhone6 plus£¬¾Í¿ÉÒÔ°ÑviewµÄsize
classÉèÖóɣºw £¨Regular£©£¯h£¨Compact£©£¬È»ºó¼ÌÐøÊÊÅä

È»ºóµ±³ÌÐòÅÜÔÚ²»Í¬µÄÉ豸ÉÏ£¬»òÕßÉ豸ºáÆÁºÍÊúÆÁÇл»£¬¾ÍÄÜÏÔʾÏàÓ¦µÄUIÁË¡£
˵ÁËÕâô¶à£¬»¹ÊǶ¯ÊÖʵÑéһϰɣº
ÊÊÅäiPhone6£¬ÔÚRootViewControllerµÄviewÉÏÌí¼ÓÒ»¸öеÄview£¬ÈÃÕâ¸öеÄviewÎÞÂÛÆÁÄ»ºáÆÁ»¹ÊÇÊúÆÁʱºò¶¼¾àÀëÆäsuperviewµÄ±ßÔµ50µã¿í£¬²¢ÇÒºáÆÁʱºòΪÂÌÑÕÉ«£¬ÊúÆÁʱºòΪºìÑÕÉ«¡£
1¡¢Ð½¨ÏîÄ¿£¨¸Õ¸ÕÒѾн¨ÁËÒ»¸öAL8µÄÏîÄ¿£¬²»Öظ´²½ÖèÁË£©
2¡¢Çл»size classΪwCompact£¯hRegularģʽ

²¢ÇÒÌí¼ÓÒ»¸öview£¬²»ÓÃ¹ÜÆäframe£¬²¢ÉèÖÃÆä±³¾°É«ÎªºìÉ«

½ÓÏÂÀ´Ñ¡ÖкìÉ«µÄview£¬È»ºóµã»÷Xcode¶¥²¿¹¤¾ßÀ¸µÄEditor£Pin£¬È»ºó·Ö±ðÌí¼ÓºìÉ«viewÏà¶Ôsuperview±ß¿òµÄÔ¼Êø£¨ÉÏÏÂ×óÓÒ£©

Ìí¼ÓÔ¼ÊøµÄ¹ý³ÌÖлῴµ½Ô¼ÊøµÄÏßÊÇ»ÆÑÕÉ«£¬±íÃ÷µ±Ç°µÄÔ¼Êø»¹²»ÄÜÈ·¶¨viewµÄframe£¬ÐèÒª¼ÌÐøÌí¼Ó£¬µ±Ìí¼ÓÍê4¸öÔ¼Êøºó£¬Ô¼ÊøÏßµÄÑÕÉ«ÊÇÀ¶É«µÄ£¬±íÃ÷µ±Ç°Ô¼ÊøÊÇÕýÈ·µÄ¡£

È»ºóÑ¡ÖÐÔ¼Êø£¬Éè¶¨Ô¼ÊøµÄÖµ£¨ÎÒÃDz»ÊÇÏëÈÃеÄview¾àÀëÆäsuperview±ß½ç50µã¿íÂ𣡣©£¬4¸öÔ¼Êø¶¼ÒªÉèÖá£

ÉèÖÃÍêºóµã»÷ÏÂview»á×Ô¶¯¸üÐÂframe£¬Ó¦¸ÃÊÇÕâÑùµÄ£º

3¡¢Çл»size classΪwRegular£¯hCompactģʽ£¬È»ºóÖØ¸´µÚ¶þ²½ÖеÄÉèÖã¬Çø±ðÊÇÐÂÌí¼ÓµÄview±³¾°ÑÕÉ«ÉèÖÃΪÂÌÉ«¡£

4¡¢´ó¹¦¸æ³É£¬ÓÃÄ£ÄâÆ÷ÔËÐÐϰɣ¬Ä£ÄâÆ÷ҪѡÔñiPhone6 plusŶ£¡È»ºóÐýתÆÁÄ»¿´¿´ÊDz»ÊÇÎÒÃÇÏëÒªµÄЧ¹û£¡
˼¿¼£º°ÑÄ£ÄâÆ÷Çл»ÎªiPhone6¡¢iPhone5¡¢iPhone4s¡¢iPad»áÓÐʲôÏÖÏó£¡ÏÂһƪ»á½âÊÍ£¡
iOS¿ª·¢¡«UI²¼¾Ö£¨¶þ£©storyboardÖÐautolayoutºÍsize
classµÄʹÓÃÏê½â
Ò»¡¢¸ÅÒª£ºÇ°Ò»Æª³õ²½µÄÃèÊöÁËsize classµÄ¸ÅÄÄÇôʵ¼ÊÖÐÈçºÎʹÓÃÄØ£¬ÏÂÃæÁ½¸öÎÊÌâÊÇÎÒÃÇÒ»¶¨»áÓöµ½µÄ£º
1¡¢Xcode6ÖÐÔö¼ÓÁËsize class£¬ÔÚstoryboardÖÐÈçºÎʹÓã¿
2¡¢auto layout¸ÃÈçºÎÓësize classÅäºÏÀ´½øÐÐUI²¼¾Ö£¿
¶þ¡¢Á˽âÒ»¼þÐÂÊÂÎïµÄ×îºÃµÄ°ì·¨¾ÍÊÇʵ¼ù£¬ÈÃÎÒÃǽҿªÄÇÉñÃØµÄÃæÉ´£º
Àý×Ó1¡¢Ð½¨Ò»¸öSingle View Application templateÏîÄ¿Demo1£¬ÍÏ×§Ò»¸önewViewµ½rootViewÉÏ£¬²¢ÉèÖñ³¾°É«ÎªÂÌÉ«£¬
È»ºó²»×öÈÎºÎÆäËûÐ޸ģ¬ÔËÐÐÏîÄ¿£¬Ä£ÄâÆ÷Ñ¡ÔñiPhone6£¬ÔËÐÐЧ¹ûÈçͼ£º
ºáÆÁ£º

朮磼

°ÑÄ£ÄâÆ÷¸ü¸ÄΪiPad¡¢iPhone4sµÈ£¬È»ºóÔÙÐýתÆÁÄ»£¬·¢ÏÖÂÌÉ«µÄnewViewµÄλÖü¸ºõûÓб仯¡£²é¿´Document
Outline·¢ÏÖûÓÐÈκÎconstraint£¨Ô¼Êø£©×÷ÓÃÓÚÂÌÉ«viewÉÏ£¬ÀíÂÛÉÏÈç¹ûÒ»¸öviewûÓÐÈκÎconstraint£¬ÄÇôview½«Ã»ÓÐλÖü°´óС£¬µ«Ä¿Ç°À´¿´ÊÇûÎÊÌâµÄ£¬ºÎ½â£¿

²é¿´viewµÄsize inspector£¬·¢ÏÖÃØÃÜÁË£º

ÔÀ´Èç¹û²»¸øÒ»¸öviewÌí¼ÓÈκÎconstraint£¬ÏµÍ³»á×Ô¶¯¸øviewÌí¼Ó×ó¡¢ÉÏ¡¢¿í¡¢¸ßËĸöÔ¼Êø£¬¾ÍÊÇ˵ÐÂÂÌÉ«µÄview»áÓй̶¨µÄ¿íºÍ¸ß£¬È»ºóÒÔÆÁÄ»×óÉϽÇΪ²Î¿¼µã£¬ÓÐÒ»¸öϵͳÌí¼ÓµÄĬÈÏλÖᣣ¨Èç¹ûÎÒÃÇÏòÂÌÉ«viewÌí¼ÓÈÎºÎÆäËûÔ¼Êø£¬ÄÇôϵͳ×Ô¶¯Ìí¼ÓµÄÔ¼Êø½«ÊµÐ§£©
»¹ÓÐÒ»¸öÎÊÌâÊÇ£¬¸Õ¸ÕÇл»Á˺ܶ಻ͬÀàÐ͵ÄÄ£ÄâÆ÷£¬Ï൱ÓÚÇл»Á˲»Í¬µÄsize class£¬µ«ÏÔʾÂÌÉ«view¶¼Õý³££¬¶øsize
classµÄ´æÔÚµÄÄ¿µÄ¾ÍÊÇΪÁËÇø·Ö²»Í¬µÄsize class£¨ÀýÈ磺iPhone4sºáÆÁwCompact/hCompact£¬iPhone4sÊúÆÁwCompact/hRegular£¬iPadºáÊúÆÁ¶¼ÊÇwRegular/hRegular£©£¬È»ºóÀ´×ö²»Í¬µÄUI²¼¾Ö£¬ºÎ½â£¿
²é¿´µ±Ç°µÄsize class:

µ±Ç°µÄsize classΪwAny/hAny£¬Ò²¾ÍÊÇ˵ÔÚsize classΪwAny/hAnyµÄʱºòÌí¼Óconstraint£¬ÔÚÆäËûsize
classµÄʱºòÒ²ÉúЧ¡£Æäʵ´Ó×ÖÃæÉÏÒ²¿ÉÒÔ¿´³ö£¬Any¾ÍÊÇÈκεÄÒâ˼£¬CompactºÍRegularÊÇAnyµÄ×ÓÀà¡£
Àý×Ó2¡¢»ùÓÚiPhoneÊÊÅä½çÃæ£¬Ìí¼ÓÈý¸öviewµ½rootViewÉÏ£¬È»ºóÎÞÂÛºáÆÁ»¹ÊÇÊúÆÁ£¬ÐÂÌí¼ÓµÄÈý¸öviewÖ®¼ä¼°ÓëÆÁÄ»±ß¿òµÄ¾àÀë¶¼±£³Ö²»±äµÄ¼ä¾à20µã¿í£¬Ð§¹ûÈçͼ£º

н¨Ò»¸öSingle View Application templateÏîÄ¿Demo2£¬ÒòΪҪÊÊÅäiPhoneºáÊúÆÁ£¬ËùÒÔÐÞ¸Äsize
classΪwCompact/hRegularÀ´ÊÊÅäÊúÆÁ£º
ÍÏ×§3¸öviewµ½rootViewÉÏ£¬²¢ÉèÖÃÆä±³¾°ÑÕÉ«

ΪÁËÂú×ãÉè¼ÆÒªÇó£¬ÒªÌí¼ÓÈçÏÂconstraint£º
£¨1£©É趨ÂÌÉ«view¾àÀësuperview×ó±ß¾àºÍÉϱ߾ࣻ
£¨2£©É趨»ÆÉ«view¾àÀësuperviewÓұ߾àºÍÉϱ߾࣬Ïà¶ÔÂÌÉ«viewµÄµÄ×ó±ß¾à£»
£¨3£©É趨À¶É«viewµÄ×ó±ß¾àºÍÓұ߾àºÍϱ߾࣬Éϱ߾àÀëÂÌÉ«viewϱߵľàÀ룻
£¨4£©É趨ÂÌÉ«viewÓë»ÆÉ«viewµÈ¿í
£¨5£©É趨À¶É«viewÓëÂÌÉ«viewµÈ¸ß
ÏÖÔÚ¿ªÊ¼¶¯ÊÖ°É£ºÑ¡ÖÐÂÌÉ«view£¬Eidtor£>Pin£>Leading
Space to Superview¸øÂÌÉ«viewÌí¼ÓÏà¶ÔÆäsuperviewµÄ×ó±ß¾à£¬È»ºóÑ¡ÖÐconstraint£¬ÐÞ¸ÄÔ¼ÊøµÄֵΪ20£¬ÆäËûconstraintÒÔ´ËÀàÍÆ£º

Ìí¼ÓÍêÈçͼ£º

ÆäÖкìÉ«¿ò²¿·ÖÇåÎúµÄ±í´ïÁËËùÌí¼ÓµÄconstraint£»
À¶É«¿ò²¿·ÖʱÌí¼ÓµÄconstraint£¬Ä¿Ç°Îª»ÆÉ«Ïߣ¬±íÃ÷µ±Ç°µÄconstraint»¹²»Äܶ¨Î»view£¬µ±Ò»¸öviewµÄconstraintÕýÈ·µÄʱºò£¬constraintµÄÑÕÉ«»á±äΪÀ¶É«¡£
ÂÌÉ«Ïß¿òµÄ²¿·Ö±í´ïÁËconstraintµÄÊýÖµ£¬ÎÒÃÇÏëÈñ߾àΪ20£¬ËùÒÔÉèÖÃÊýֵΪ20 ¡£wC hR
Installed±íÃ÷µ±Ç°constraintÊÊÓÃÓÚwC hRÕâÖÖsize class£¬²»ÊʺÏany anyµÄsize
class¡£
Ìí¼ÓÂÌÉ«viewÓë»ÆÉ«view֮ǰµÄ¾àÀëʱºò£¬ÓÉÓÚÊÇÉ趨Á½¸ö×ÓviewµÄconstraint£¬ËùÒÔҪѡÖÐÁ½¸öview£¬È»ºóEditor£>Pin
->Horizontal£¬É趨ֵΪ20£º

ͬÑù·½·¨Editor£>Pin ->Width Equally£¬É趨ÂÌÉ«viewÓë»ÆÉ«viewµÈ¿í¶È£¬À¶É«viewÓëÂÌÉ«viewµÈ¸ß£¬½á¹ûÈçͼ£º

µ«·¢ÏÖconstraintÑÕÉ«ÈÔÈ»ºó»ÆÉ«£¬ÔÒòÊǵ±Ç°viewµÄλÖúÍconstraintÏ£ÍûµÄ²»Ò»Ö£¬¸üÐÂÏÂframe£¨ÒªÑ¡ÖÐ3¸öview£¬ÒòΪconstraint¹ØÁª3¸öview£©»òÕßµã»÷Document
OutlineÖеĻÆÉ«Ð¡¼ýÍ·£¬È»ºó»á¿´µ½¾ßÌåµÄconstraintÐÅÏ¢À´Ò»²½²½µ÷ÊÔ£¬Õâ¸öÒ²ÊÇXcode6×îÓÐÍ»ÆÆµÄµØ·½£º

È»ºóЧ¹ûÈçͼ£º

È»ºóÔËÐÐÏÂÏîÄ¿°É£¬·¢ÏÖȷʵºÍÔ¤ÆÚµÄÒ»Ñù¡£È»ºóÐýתÆÁÄ»£¬ÊDz»ÊÇ·¢ÏÖºáÆÁʱºò°×ÁË£¬ÆÁĻʲô¶¼Ã»ÓÐÁË£¿ÔÒòÊÇÎÒÃǽö½öÊÊÅäµÄÊúÆÁ£¬ºáÆÁ»¹Ã»ÓÐÊÊÅä°¡£¡
ÐÞ¸Äsize class£¬iPhone4sºáÆÁµÄsize classΪwCompact/hCompact£¬¶øiPhone6
plusΪwReguage/hCompact£¬ÄÇÎÒÃDz»ÈçÉèÖÃΪwAny/hCompact°É£¡È»ºó°²×°ÉϱßÊÊÅäÊúÆÁµÄ·½Ê½ÊÊÅäºáÆÁ¡£ÊÊÅäºÃºóÔÙ´ÎÔËÐУ¬ºáÊúÆÁ¶¼Ó¦¸ÃÊÇÎÒÃÇÏëÒªµÄÁË¡£
Àý×Ó3¡¢Ð½¨Ò»¸öSingle View Application templateÏîÄ¿Demo3£¬Ìí¼ÓÒ»¸öview£¬ÊÇÕâ¸öviewµÄ¿í¶ÈºÍ¸ß¶È¶¼ÊÇ100µã¿í£¬²¢ÇÒʼÖÕ¾ÓÖÐÓÚsuperview£¬Ð§¹ûÈçͼ£º

Õâ¸öÀý×Ӻܼòµ¥£¬Ò²ºÜÈÝÒ×ʵÏÖ£¬Ä¿µÄÊDz¹³äÒÔÉÏÁ½¸öÀý×ÓûÓÐÌá¼°µ½µÄһЩϸ½Ú¡£
ÔÚrootViewÉÏÌí¼ÓÒ»¸öview£¬É趨±³¾°É«ÎªÂÌÉ«£º

ÓÉÓÚ²»´òËãÇø·ÖÊÇÄÄÖÖiOSÉ豸£¬ËùÒÔsize classÑ¡ÔñwAny/hAny£¬È»ºóÂÌÉ«µÄviewËæ±ã·Åµ½superviewÉϾͿÉÒÔ£¬Auto
LayoutµÄÀíÄî¾ÍÊDz»ÓÃÈ¥¹Ü¾ßÌåviewµÄframe£¬Òª×¢ÒâµÄÊÇÕâ¸öview×îÖÕÏëÈçºÎµÄÏÔʾ£¬ÊôÓÚ»ùÓÚÄ¿µÄÉè¼ÆµÄ·¶³ë¡£
Õâ¸öÀý×ÓÒªÍê³ÉÁ½¼þÊÂÇ飺
£¨1£©Éè¶¨Ô¼ÊøÊ¹viewµÄ¿íºÍ¸ßΪ100µã¿í
£¨2£©Éè¶¨Ô¼ÊøÊ¹viewʼÖÕ¾ÓÖÐÓÚsuperview
ÏÈ×öµÚ£¨1£©¼þÊ£ºÑ¡ÖÐview£¬È»ºóEditor£>Pin->Width£¬É趨Ϊ100£¬Í¬Ñù·½·¨É趨Height

È»ºóµÚ£¨2£©¼þÊÇÈÃview¾ÓÖУº»¹ÊÇÑ¡ÖÐview£¬È»ºóEditor £>Aligh
£>Horizontal Center in Container£¬Í¬Ñù·½·¨É趨´¹Ö±¾ÓÖÐ¶ÔÆë£º

È»ºó»á·¢ÏÖDocument OutlineÓÒÉϽÇÓÐÒ»¸ö»ÆÉ«Ð¡¼ýÍ·£º

µã»÷»ÆÉ«¼ýÍ·½øÈëstructureÒ³Ãæ£¬¿ÉÒÔ¿´µ½Ò»Ð©ÌáʾÐÅÏ¢£¬¿ÉÒÔÁ˽⵱ǰ²¼¾Ö´æÔÚÎÊÌ⣬ָµ¼ÏÂÒ»²½¸Ã×öʲô¡£ÔÚviewÖп´µ½Ò»¸ö»ÆÉ«ÐéÏß¿ò£¬Õâ¸ö¿ò´ú±íÄ¿Ç°Ô¼ÊøµÃµ½µÄview£¬ÔÚstructureÒ³ÃæÓÐÒ»¸ö»ÆÉ«µÄµã£¬µã»÷ºó»áÌáʾÄãÈçºÎÐ޸ģº

Ñ¡ÔñUpdate Frame¾ÍÊǰ´ÕÕµ±Ç°µÄÔ¼ÊøÈ¥¸üÐÂview£¬Ñ¡ÔñUpdate ConstainsÊǰ´ÕÕÍÏ×§½øÈ¥viewµÄframe¸üÐÂÔ¼Êø¡£ÔÚÕâ¸öÀý×ÓÖÐUpdate
FrameÊÇÎÒÃÇÐèÒªµÄ¡£È»ºóÔËÐÐÏîÄ¿¿´¿´ÊDz»ÊÇÎÒÃÇÏëÒªµÄЧ¹û°É£¡
Ò»¡¢¸ÅÒª
ͨ¹ý¶ÔiOS8½çÃæ²¼¾ÖµÄѧϰºÍ×ܽᣬ·¢ÏÖautolayout²ÅÊÇÖ÷½Ç£¬autolayoutÊÇiOS6ÒýÈëµÄÐÂÌØÐÔ£¬µ±Ê±»¹´ÖdzµÄѧϰÁËÏ£¬¿ÉÊÇûÓÐÕæÕýÓ¦Óõ½ÏîÄ¿ÖС£Ëæ×ÅiOSÉ豸³ß´çÖð½¥Ë鯬»¯£¬´¿´âµÄhard
code·½Ê½UI²¼¾Ö½«»á×ßÏòËÀ½Ç£¬¶øautoresizing·½Ê½Ò²ÓÐÆä¾ÖÏÞÐÔ£¬ËùÒÔÎÞÂÛÈçºÎautolayout¶¼½«³ÉΪUI²¼¾ÖµÄÖØÒª·½Ê½¡£
ǰÁ½ÆªÒÔ·¢ÉÕÓÑÐÄ̬¶ÔiOS8½çÃæ²¼¾ÖµÄÖ÷ÒªÔªËØsize classºÍautolayout½øÐÐÁË̽Ë÷£¬·¢ÏÖÒªÍêÈ«ÕÆÎÕautolayoutÐèÒª´óÁ¿µÄʱ¼äȥʵ¼ù×ܽᡣËùÒÔÉîÈë˼¿¼autolayoutÊǺÜÓбØÒªµÄ¡£Äã¿ÉÄÜÓкÍÎÒͬÑùµÄÒÉÎÊ£¬ÈçÏ£º
1¡¢ÒÔºóÒ»ÂÉʹÓÃautolayoutÂ𣿳ýÁËÔÚstoryboardÖÐʹÓÃautolayout£¬´úÂ뷽ʽautolayoutÈçºÎʹÓã¿
2¡¢ºÃÏñºöÂÔÁËÒ»¸öÖØÒªÎÊÌ⣬¾ÍÊÇview¶¯»ÔÚautolayoutÈçºÎʵÏÖ£¿
3¡¢autolayoutÓÐûÓоÖÏÞÐԺͽâ¾ö²»Á˵ÄÎÊÌ⣿¼æÈÝÐÔÔõôÑù£¿Ð§ÂÊÔõôÑù£¿
4¡¢¡¡
¶þ¡¢Ñо¿¿ªÊ¼
1¡¢Ö±½Ó˵ÒÔºó¶¼Ó¦¸ÃʹÓÃstoryboard£«autolayout¸Ð¾õÊDz»¸ºÔðµÄ˵·¨£¬¶ÁÁ˺öàÍøÂçµÄÌû×Ó£¬×îºó×ܽáÈçÏÂÇé¿öʹÓÃautolayout»áÓаïÖú£º
a µ±ÐèҪչʾµÄÄÚÈݺܶಢÇҳߴ粻¹Ì¶¨£»
b ³ÌÐòÐèÖ§³ÖÆÁÄ»Ðýת£¨Ö÷ÒªÊÇiPad³ÌÐò£¬iPhone³ÌÐòºáÆÁµÄ³¡¾°Óеã·ÇÖ÷Á÷£©£»
c ³ÌÐòͨÓÃÓÚiPhoneºÍiPad;
µ«storyboardÖÐʹÓÃautolayoutÓÐÀûÓбף¬ºÃ´¦µ±È»ÊÇ¿ÉÊÓ»¯£¬ÊµÏÖ¼òµ¥¹¦ÄܺܽÚʡʱ¼ä£¬µ«Ò²Óб׶ˣ¬ÀýÈ粻СÐÄÒÆ¶¯Ò»¸ö¿Ø¼þ¾Í»áÈÃŪÂÒÄÇÐ©Ô¼Êø¡£Å׿ªstoryboard¶øÊ¹ÓÃautolayout£¬¾ÍÐèÒª´úÂ붨ÒåÔ¼ÊøÁË£¬¶øÇÒ´úÂëÁ¿Ò²²»ÊǺܴ󡣵±appÖÐһЩviewµÄ³öÏÖʱ¸ù¾ÝÍøÂçÊý¾ÝÀ´¾ö¶¨µÄʱºò£¬´úÂ뷽ʽ¿ÉÄܸüºÏÊÊ¡£
ÏÈ¿´Ò»¸ö¼òµ¥µÄDemo£º
Àý×Ó1:н¨Ò»¸öSingle View Application templateÏîÄ¿Demo4£¬ÔÚrootViewÉÏÌí¼ÓÒ»¸öÂÌÑÕÉ«µÄview£¬Ê¹ÐÂÌí¼ÓµÄviewËĸö±ß¾àÀësuperViewËıß20µã¿í
Ч¹ûÈçͼ£º

ʹÓÃstoryboardÀ´ÊµÏÖÕâ¸öЧ¹ûºÜ¼òµ¥£¬Ñ¡ÖÐÂÌÉ«view£¬È»ºóÌí¼Ó4¸öÏà¶ÔÓÚsuperviewµÄ±ß½çÔ¼Êø£¬Ô¼ÊøµÄÊýÖµÉèÖÃΪ20£¬È»ºóUpdate
Frame¾Í¿ÉÒÔÁË£¬ÒòΪ²»Çø·ÖiOSÉ豸£¬ËùÒÔsize class¿ÉÒÔÉèÖÃΪĬÈϵÄwAny hAny¡£DemoÏÂÔØ
½ÓÏÂÀ´Ê¹ÓôúÂëÀ´ÊµÏÖUI²¼¾Ö£¬Ä¿Ç°ÓÐ3ÖÖ·½·¨¿ÉÒÔʹÓ㺣¨1£©×î»ù±¾µÄÔ¼ÊøÊµÏÖ·½Ê½£»£¨2£©ÌØÊâ¸ñʽ»¯ÓïÑÔµÄÔ¼ÊøÊµÏÖ·½Ê½£»£¨3£©µÚÈý·½UIView-AutoLayout
£¨1£©×î»ù±¾µÄÔ¼ÊøÊµÏÖ·½Ê½
1.<span style="font-size:12px;">- (void)viewDidLoad { 2. [super viewDidLoad]; 3. // Do any additional setup after loading the view, typically from a nib. 4. self.view.translatesAutoresizingMaskIntoConstraints =NO; 5. 6. UIView *newView = [UIView new]; 7. newView.backgroundColor = [UIColor greenColor]; 8. [self.view addSubview:newView]; 9. 10. newView.translatesAutoresizingMaskIntoConstraints =NO; 11. 12. NSLayoutConstraint *constraint = nil; 13. 14. constraint = [NSLayoutConstraint constraintWithItem:newView 15. attribute:NSLayoutAttributeLeading 16. relatedBy:NSLayoutRelationEqual 17. toItem:self.view 18. attribute:NSLayoutAttributeLeading 19. multiplier:1.0f 20. constant:20]; 21. [self.view addConstraint:constraint]; 22. 23. constraint = [NSLayoutConstraint constraintWithItem:newView 24. attribute:NSLayoutAttributeTrailing 25. relatedBy:NSLayoutRelationEqual 26. toItem:self.view 27. attribute:NSLayoutAttributeTrailing 28. multiplier:1.0f 29. constant:-20]; 30. [self.view addConstraint:constraint]; 31. 32. constraint = [NSLayoutConstraint constraintWithItem:newView 33. attribute:NSLayoutAttributeTop 34. relatedBy:NSLayoutRelationEqual 35. toItem:self.view 36. attribute:NSLayoutAttributeTop 37. multiplier:1.0f 38. constant:20]; 39. [self.view addConstraint:constraint]; 40. 41. constraint = [NSLayoutConstraint constraintWithItem:newView 42. attribute:NSLayoutAttributeBottom 43. relatedBy:NSLayoutRelationEqual 44. toItem:self.view 45. attribute:NSLayoutAttributeBottom 46. multiplier:1.0f 47. constant:-20]; 48. [self.view addConstraint:constraint]; 49. 50.}</span>
|
£¨2£©ÌØÊâ¸ñʽ»¯ÓïÑÔµÄÔ¼ÊøÊµÏÖ·½Ê½
1.<span style="font-size:12px;">- (void)viewDidLoad { 2. [super viewDidLoad]; 3. self.view.translatesAutoresizingMaskIntoConstraints =NO; 4. 5. UIView *newView = [UIView new]; 6. newView.backgroundColor = [UIColor greenColor]; 7. [self.view addSubview:newView]; 8. newView.translatesAutoresizingMaskIntoConstraints =NO; 9. 10. NSMutableArray *constraintArray = [NSMutableArray array]; 11. 12. [constraintArray addObjectsFromArray:
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[newView]-20-|" 13. options:0 14. metrics:nil 15. views:NSDictionaryOfVariableBindings(newView, self.view)]]; 16. [constraintArray addObjectsFromArray:
[NSLayoutConstraint constraintsWithVisualFormat:@"V:|-20-[newView]-20-|" 17. options:0 18. metrics:nil 19. views:NSDictionaryOfVariableBindings(newView, self.view)]]; 20. [self.view addConstraints:constraintArray]; 21.}</span>
|
£¨3£©µÚÈý·½UIView-AutoLayout
1.<span style="font-size:12px;">- (void)viewDidLoad { 2. [super viewDidLoad]; 3. self.view.translatesAutoresizingMaskIntoConstraints =NO; 4. 5. UIView *newView = [UIView new]; 6. newView.backgroundColor = [UIColor greenColor]; 7. [self.view addSubview:newView]; 8. newView.translatesAutoresizingMaskIntoConstraints =NO; 9. 10. [newView autoPinEdgeToSuperviewEdge:ALEdgeLeading withInset:20.0f]; 11. [newView autoPinEdgeToSuperviewEdge:ALEdgeTrailing withInset:20.0f]; 12. [newView autoPinEdgeToSuperviewEdge:ALEdgeTop withInset:20.0f]; 13. [newView autoPinEdgeToSuperviewEdge:ALEdgeBottom withInset:20.0f]; 14.}</span>
|
ÒÔÉÏ3ÖÖ·½Ê½¶¼ÊµÏÖÁËÎÒÃÇÏëÒªµÄЧ¹û£¬¿´À´´úÂëʵÏÖautolayoutÒ²²»ÊÇÄÇô¸´ÔÓ£¡
Àý×Ó2:ͨ¹ýÉϱßÀý×ÓÎÒÃÇʵÏÖÒ»¸ö¼òµ¥µÄUI²¼¾Ö£¬ÏÂÃæÀ´Ò»¸öÉÔ΢¸´ÔÓµãµÄ£¬°ÑÉÏһƪÖÐÌáµ½3¸öview²¼¾ÖµÄÄǸöÀý×ÓÓôúÂë²¼¾ÖʵÏÖһϣ¬µ«ÄѶÈÓÐËùÔö¼Ó£¬µ±size
classÇл»µÄʱºò£¬Ò³Ãæ²¼¾Ö·¢ÉúÏàÓ¦µÄ¸Ä±ä£¬Ð§¹ûÈçͼ£º


Ê×Ïȳõʼ»¯3¸öView£º
1.<span style="font-size:12px;">- (UIView *) alView { 2. UIView *newView = [UIView new]; 3. newView.translatesAutoresizingMaskIntoConstraints =NO; 4. 5. return newView; 6.} 7.UIView *greenView = [self alView]; 8.greenView.backgroundColor = [UIColor greenColor]; 9.[self.view addSubview:greenView]; 10.UIView *yellowView = [self alView]; 11.yellowView.backgroundColor = [UIColor yellowColor]; 12.[self.view addSubview:yellowView]; 13.UIView *blueView = [self alView]; 14.blueView.backgroundColor = [UIColor blueColor]; 15.[self.view addSubview:blueView];</span>
|
½ÓÏÂÀ´ÊÊÅäÊúÆÁµÄÔ¼Êø£º
1.<span style="font-size:12px;">- (NSMutableArray *)
portraitConstraints:(UIView *)greenView :(UIView *)yellowView :(UIView *)blueView 2.{ 3. NSMutableArray *constraintArray = [NSMutableArray array]; 4. 5. [constraintArray addObjectsFromArray:[NSLayoutConstraint 6. constraintsWithVisualFormat:@"H:|-20-[greenView]-20-
[yellowView(==greenView)]-20-|" options:0 metrics:nil 7. views:NSDictionaryOfVariableBindings(greenView, yellowView)]]; 8. [constraintArray addObjectsFromArray:[NSLayoutConstraint 9. constraintsWithVisualFormat:@"V:|-20-[greenView]-20-
[blueView(==greenView)]-20-|" options:0 metrics:nil 10.views:NSDictionaryOfVariableBindings(greenView, blueView)]]; 11. 12. [constraintArray addObjectsFromArray:[NSLayoutConstraint 13. constraintsWithVisualFormat:@"V:|-20-[yellowView]-20-
[blueView(==yellowView)]-20-|" options:0 metrics:nil 14. views:NSDictionaryOfVariableBindings(yellowView, blueView)]]; 15. 16. [constraintArray addObjectsFromArray:[NSLayoutConstraint 17. constraintsWithVisualFormat:@"H:|-20-[blueView]-20-|" options:0 metrics:nil 18. views:NSDictionaryOfVariableBindings(blueView)]]; 19. 20. return constraintArray; 21.}</span>
|
È»ºóºáÆÁµÄÔ¼Êø£º
1.<span style="font-size:12px;">- (NSMutableArray *)
landscapeConstraints:(UIView *)greenView :(UIView *)yellowView :(UIView *)blueView 2.{ 3. NSMutableArray *constraintArray = [NSMutableArray array]; 4. 5. [constraintArray addObjectsFromArray:[NSLayoutConstraint 6. constraintsWithVisualFormat:@"H:|-20-[greenView]-20-
[yellowView(==greenView)]-20-|" options:0 metrics:nil 7. views:NSDictionaryOfVariableBindings(greenView, yellowView)]]; 8. 9. [constraintArray addObjectsFromArray:[NSLayoutConstraint 10. constraintsWithVisualFormat:@"V:|-20-[blueView]-20-
[greenView(==blueView)]-20-|" options:0 metrics:nil 11. views:NSDictionaryOfVariableBindings(greenView, blueView)]]; 12. 13. [constraintArray addObjectsFromArray:[NSLayoutConstraint 14. constraintsWithVisualFormat:@"V:|-20-[blueView]-20-
[yellowView(==blueView)]-20-|" options:0 metrics:nil 15. views:NSDictionaryOfVariableBindings(yellowView, blueView)]]; 16. 17. [constraintArray addObjectsFromArray:[NSLayoutConstraint 18. constraintsWithVisualFormat:@"H:|-20-[blueView]-20-|" options:0 metrics:nil 19. views:NSDictionaryOfVariableBindings(blueView)]]; 20. 21. return constraintArray; 22.}</span>
|
×îºó»¹Òª´¦ÀíÆÁÄ»Ðýת£º
1.<span style="font-size:12px;">-
(void)willTransitionToTraitCollection:(UITraitCollection *)newCollection 2. withTransitionCoordinator:(id <UIViewControllerTransitionCoordinator>)coordinator 3.{ 4. [super willTransitionToTraitCollection:newCollection withTransitionCoordinator:coordinator]; 5. 6. [coordinator animateAlongsideTransition:^
(id <UIViewControllerTransitionCoordinatorContext> context) { 7. if (newCollection.verticalSizeClass == UIUserInterfaceSizeClassCompact) { 8. NSLog(@"%s----%d", __FUNCTION__, __LINE__); 9. [self.view removeConstraints:self.view.constraints]; 10. [self.view addConstraints:
[self landscapeConstraints:self.greenView_ :self.yellowView_ :self.blueView_]]; 11. } else { 12. NSLog(@"%s----%d", __FUNCTION__, __LINE__); 13. [self.view removeConstraints:self.view.constraints]; 14. [self.view addConstraints:
[self portraitConstraints:self.greenView_ :self.yellowView_ :self.blueView_]]; 15. } 16. [self.view setNeedsLayout]; 17. } completion:nil]; 18.}</span>
|
ÕâÑù¾ÍʵÏÖÁËÎÒÃÇÔ¤ÆÚµÄЧ¹û£¬×ܽáÏÂÀ´£¬auotlayout¾ÍÊǸøviewÌí¼Ó×ã¹»µÄÔ¼Êø£¬ÈÃviewϵͳ¿ÉÒÔ¸ù¾ÝÔ¼ÊøÀ´¼ÆËã³öÒ»¸öviewµÄframe¡£¶¯ÊÖÁ·Ï°Ò»Ï°ɣ¡
2¡¢view¶¯»ÔÚautolayoutʵÏÖ
µ±²¼¾Ö·¢Éú¸Ä±äʱ£¬Ï൱ÓÚ¶Ô×Óview½øÐÐÖØÐ²¼¾Ö£¬¶ø×ÓviewÖØÐ²¼¾Öµ÷Óà layoutIfNeeded£¬ËùÒÔ¶¯»¿ÉÒÔÕâÑùʵÏÖ£º
1.<span style="font-size:12px;">- (void)animateConstraints 2.{ 3. [UIView animateWithDuration:0.5 animations:^{ 4. [self.view layoutIfNeeded]; 5. }]; 6.}</span>
|
GithubÉÏÒѾÓÐDemoÁË£¡
3¡¢autolayoutÓÐûÓоÖÏÞÐԺͽâ¾ö²»Á˵ÄÎÊÌ⣿¼æÈÝÐÔÔõôÑù£¿Ð§ÂÊÔõôÑù£¿
autolayout¶Ôview transformsÖ§³ÖµÄ²»ºÃ£¬ÕâÀïÓÐÌû×ÓÏêϸÃèÊöÁËÕâ¸öÎÊÌâ¡£
ÖÁÓÚ¼æÈÝÐÔ£¬Ö»´ÓiOS6¾ÍÒѾÌá³öÁËautolayoutµÄ¸ÅÄÏÖÔÚiOS5ϵͳ²»ÊǺܶàÁË£¬ÉõÖÁiOS6ϵͳ¶¼ÒѾÉý¼¶ÎªiOS7£¬Î´À´Ò»¶Îʱ¼ä´ó²¿·ÖÓû§Ó¦¸ÃÊÇʹÓÃiOS7ºÍiOS8ϵͳ£¬ËùÒÔ¼æÈÝÐÔÎÊÌâ²»»áÌ«´ó£¬µ«size
classÊÇiOS8²ÅÓеĸÅÄËùÒÔ»¹ÓÐÓÐÒ»¶¨µÄÊÊÅ乤×÷Á¿¡£
ЧÂÊ»°ÌâÕâÀïÓÐÌáµ½£¬ÓÐʱ¼äÔÙϸÑо¿¡£
½áÊøÓʱ¼äºÍÌåÁ¦×ÜÊÇÓÐÏ޵쬱êÌâÊÇautolayoutÏê½â£¬¿ÉÏë´ïµ½Ïê½â»¹ÐèÒª¸ü¶àµÄʱ¼äȥʵ¼ùºÍ×ܽᣬ»¹ÓÐһЩϸ½ÚûÓÐÌåÏÖ³öÀ´£º
ÀýÈ磺
1.<span style="font-size:12px;">
[NSLayoutConstraint constraintsWithVisualFormat:@"H:|-20-[newView]-20-|
"options:0 metrics:nil views:NSDictionaryOfVariableBindings(newView, self.view)]</span> |
1¡¢ÕâÆäÖи÷¸ö²ÎÊýµÄº¬Ò壬ÁíÍâÔ¼Êø»¹ÓиöÓÅÏȼ¶µÄ¸ÅÄî
2¡¢@"H:|-20-[newView]-20-|" ÕâÖÖ¿ÉÊÓ»¯²¼¾Ö×Ö·û´®µÄº¬ÒåµÈµÈ£¬ÓпÕÔÙ²¹³äÁË£¡
|