2013-09-25 12 views
9

iOS 7'nin, yerleşik accessoryTypes'den farklı olarak özel accessoryView'leri düzenlediğini fark eden var mı?iOS 7, aksesuarView ve aksesuar tipini farklı mı gösteriyor?

enter image description here

üst bir kullanılarak yapılır: Bunun gibi

cell.accessoryView = cell.accessoryButton; 

(accessoryButton olan özelleştirilmiş bir UIButton) ikincisi kullanılarak yapılır iken:

cell.accessoryView = nil; 
cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; 

Aynı kod, aynı uygulama, aynı Xcode, ancak iOS 6'da çalışıyor stead:

enter image description here

bu SDK bir hata mı? Ya da kod yoluyla kontrol edebileceğim bir şey? Eğer alt classing ise

+0

bakmak ios7'ye aktarım için belgeler. (bağlantıyı üzgün bulmak için cba) –

cevap

23

UITableViewCell yerine accessoryView ait subview ekle layoutSubviews

- (void)layoutSubviews { 
    [super layoutSubviews]; 

    CGRect accessoryViewFrame = self.accessoryView.frame; 
    accessoryViewFrame.origin.x = CGRectGetWidth(self.bounds) - CGRectGetWidth(accessoryViewFrame); 
    self.accessoryView.frame = accessoryViewFrame; 
} 
+1

Ve eğer hücreyi alt sınıflara ayırmıyorsanız? – therealjohn

+2

Artık iOS 8'de çalışmıyor mu? AccessoryViewFrame.size ve accessoriesViewFrame.origin'in tüm değerleri 0'a eşittir. – JonSlowCN

+0

Evet, iOS8 ve iOS9'dan itibaren aksesuarView çerçevesi "(CGRect) _accessoryFrame = (origin = (x = 0, y = 0), size = (genişlik = 0, yükseklik = 0)) " –

0

bunu ayarlayabilirsiniz

nasıl autolayout eserlerine gibi bazı değişiklikler olmuştur
UIButton *indicatorBtn = [UIButton buttonWithType:UIButtonTypeCustom]; 
indicatorBtn.frame = CGRectMake(cell.contentView.frame.size.width-55, 2, 50, 50); 
[indicatorBtn setBackgroundImage:[UIImage imageNamed:@"right_indicator.png"] 
        forState:UIControlStateNormal]; 
indicatorBtn.backgroundColor = [UIColor clearColor]; 
//indicatorBtn.alpha = 0.5; 
indicatorBtn.tag = indexPath.row; 
[indicatorBtnaddTarget:self action:@selector(method:) 
    forControlEvents:UIControlEventTouchUpInside]; 

[cell.contentView addSubview:indicatorBtn];