bug1:iOS9與iOS11上不會(huì)出現(xiàn),iOS10上必定出現(xiàn)址愿。
bug再現(xiàn)場景:tabBar上中間的一個(gè)圓鈕谭企,在iOS9與11上必定居中對齊,在iOS10就會(huì)偏向右下角埃仪!
代碼還原:
- (void)layoutSubviews {
self.plusBtn.centerX = self.centerX;
//調(diào)整發(fā)布按鈕的中線點(diǎn)Y值
self.plusBtn.centerY = self.height * 0.5 - 2*LBMagin + 3;
self.plusBtn.size = CGSizeMake(self.plusBtn.currentBackgroundImage.size.width + 6, self.plusBtn.currentBackgroundImage.size.height +6);
}
- (void)setSize:(CGSize)size
{
CGRect frame = self.frame;
frame.size = size;
self.frame = frame;
}
- (void)setCenterX:(CGFloat)centerX
{
CGPoint center = self.center;
center.x = centerX;
self.center = center;
}
- (void)setCenterY:(CGFloat)centerY
{
CGPoint center = self.center;
center.y = centerY;
self.center = center;
}
首先乙濒,跟蹤調(diào)試一款iOS10的手機(jī),定住按鈕button的frame的變化卵蛉。
發(fā)現(xiàn):先設(shè)置center再設(shè)置size就會(huì)出現(xiàn)以下的frame變化過程:
frame(0,0,0,0)------->frame(centerX,centerY,0,0)------->frame (centerX,centerY,width,height)
仔細(xì)觀察颁股,你會(huì)發(fā)現(xiàn),center的位置變成了origin的位置傻丝!
因?yàn)槟阆仍O(shè)置center豌蟋,后設(shè)置size! 反之就不會(huì)這樣桑滩!不過我還是建議使用frame賦值梧疲,直接一步到位允睹!
問題是:為什么iOS10上會(huì)出現(xiàn)bug,而iOS9與iOS11上正常呢幌氮?
切換手機(jī)測試一下:
原因竟然是:在iOS11上layoutSubview的方法會(huì)執(zhí)行兩次g允堋!8没ァ米者!而且iOS10上只會(huì)執(zhí)行一次!S钪恰蔓搞!
bug2:UIViewContentModeScaleAspectFill 圖片顯示屬性,設(shè)置并不生效
UIViewContentModeScaleAspectFill, // contents scaled to fill with fixed aspect. some portion of content may be clipped.
上面是蘋果官方的解釋随橘,可是我的圖片就是越界顯示喂分,根本沒有被裁剪,為什么呢机蔗?
這個(gè)問題很簡單蒲祈,百度一下就好:imgView.clipsToBounds = YES;
這個(gè)必須設(shè)置為YES,多余部分的裁剪才真正有效萝嘁!
這是個(gè)小細(xì)節(jié)問題梆掸,可能沒有使用過ScaleAspectFill屬性的人會(huì)沒有注意到。