2013年11月21日 星期四

iOS7 UITableViewCell imageView offset issue

前言
iOS7的新界面風格確實給UX設計師跟工程師帶來不少困擾,
尤其是UITableView的layout變動讓我花了不少時間去調整。

問題
我在cell.imageView裡頭放的圖片位置跑掉了。

嘗試
// Not work 1.
[cell.imageViewsetFrame:CGRectOffset(cell.imageView.frame,-15,0)];

// Not work 2.
[tableViewsetContentOffset:CGPointMake(-15,0)];

// Not work 3.
if([selfrespondsToSelector:@selector(edgesForExtendedLayout)])
 self.edgesForExtendedLayout=UIRectEdgeNone;
 
// Not work 4.
if([mainTablerespondsToSelector:@selector(setSeparatorInset:)])
 [tableViewsetSeparatorInset:UIEdgeInsetsZero];
 
// Not work 5.
if([mainTablerespondsToSelector:@selector(setContentInset:)])
 [tableViewsetContentInset:UIEdgeInsetsZero];

實作
解決方法要點就是要實作custom cell.
第二點就是在custom cell的.m裡面 overwrite layoutSubviews 這個function.
因為只有iOS7會跑版, 所以多加個判斷式檢查.
#define IOS_SEVEN ([[UIDevice currentDevice].systemVersion floatValue] >= 7)

- (void)layoutSubviews{
 [superlayoutSubviews];
 if(IOS_SEVEN){
  self.imageView.frame=CGRectOffset(self.imageView.frame,-15,0);
 }
}

Sent from Evernote

內容回應