2017-10-17 6 views
0

J'essaie de lire la largeur et la hauteur de l'imageView dans un tableauView créé automatiquement afin d'effectuer quelques modifications.IOS/Objective-C: Déterminer la taille de imageView dans tableview créé par programmation

Cependant, la méthode que j'utilise normalement renvoie 0 pour la largeur peut-être parce que imageView n'est pas explicitement défini. Est-ce que quelqu'un sait comment faire ceci.

float imageWidth =cell.imageView.frame.size.width; 

Note: voilà comment je suis en train de créer tableview:

-(void) makeTableView { 
    //origin,origin,width,height 
    _myTableView = [[UITableView alloc] initWithFrame: 
           CGRectMake(160, 114, 140, 100) style:UITableViewStylePlain]; 
    _myTableView.separatorStyle = UITableViewCellSeparatorStyleNone; 
    _myTableView.delegate = self; 
    _myTableView.dataSource = self; 
    _myTableView.scrollEnabled = YES; 
    _myTableView.layer.cornerRadius = 5; 
    _myTableView.hidden = YES; 
    _myTableView.backgroundColor = [UIColor grayColor]; 
    _myTableView.rowHeight=24; 
    _myTableView.layer.borderColor=[UIColor grayColor].CGColor; 
    _myTableView.layer.borderWidth=1; 
    [self.view addSubview:_myTableView]; 

} 

Peut-être il y a un moyen de définir les tailles d'image ici, mais je ne sais pas ce que ce serait.

Sinon, je pourrais définir ces valeurs comme here mais cela semble impliquer de sous-classer la tableviewcell ou de modifier le contexte qui est coûteux et qui m'empêche également d'arrondir l'image.

Edit: mon cellForRowAtIndexPath actuelle

me semble être en mesure de définir la taille de la imageView en utilisant le code ci-dessous. Normalement, cependant, le code ci-dessous crée de belles images rondes indépendamment de la taille des images entrantes - tous ne sont pas carrés. Au lieu de cela, certaines images sortent, mais d'autres sortent ovales. Donc, quelque chose ne fonctionne pas ici ...

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { 
    UITableViewCell *cell = nil; 
    if (tableView == myTableView) { 
     static NSString *myRowIdentifier = @"myRowIdentifier"; 
    cell = [tableView dequeueReusableCellWithIdentifier:myRowIdentifier]; 
    if (cell == nil) { 
     cell = [[UITableViewCell alloc] 
       initWithStyle:UITableViewCellStyleDefault reuseIdentifier:myRowIdentifier] ; 
    } 
    Items* item = [_items objectAtIndex:indexPath.row]; 
    cell.textLabel.text = item.name; 
    NSString*pic = item.pic; 
    if (pic.length >=3) { 
     cell.imageView.image = [self loadImageNamed:pic]; 
    } 
    else { 
    cell.imageView.image = [UIImage imageNamed:@"placeholder.png"]; 
    } 
     //Because there is no custom cell, set size of imageview with following code 
     cell.imageView.frame = CGRectMake(0, 
              0, 
              24, 
              24); 
     cell.imageView.layer.cornerRadius = cell.imageView.frame.size.width/2; 
     cell.imageView.clipsToBounds = YES;  
     cell.imageView.contentMode = UIViewContentModeScaleAspectFill; 
} 
+0

peut vous montrer votre code 'de cellForRowAtIndexPath'? –

Répondre

0

Si après avoir réglé la taille du cadre que vous obtenez toujours la largeur = 0, rappelez utiliser

[cell layoutIfNeeded];