2011-08-26 5 views
2

[[cell imageView] 너비를 표준 UITableViewCell으로 제한 할 수 있습니까? [[cell imageView] setFrame:CGRectMake(0, 0, 50, 50)]을 시도했지만 아무 효과가 없습니다.셀의 너비를 지정하십시오.

[EDIT]

, 그렇지 않으면 UIImageView에 추가하기 전에 UIImage 크기를 변화시킬 수있다?

+0

이미지 확장을 위해 실제로 수천 가지 카테고리 구현이 있습니다. 감사합니다. – vikingosegundo

답변

2

일반 UITableViewCell에 이미지보기의 프레임을 설정하기 만하면 UITableViewCell 하위 클래스를 만들고 -layoutSubviews에 이미지보기 위치를 바꿀 수 있습니다.

+0

! 잘 작동합니다. –

0

불가능합니다.

너비가 변경되어서는 안되기 때문에 UITableViewCell 하위 클래스를 만들어야하고 UITableViewCell에서 이미지 뷰를 변경하고 그에 따라 너비를 변경할 수 있습니다. 또는 u가

UITableViewCell *cell = (UITableViewCell *)[tableView dequeueReusableCellWithIdentifier:CellIdentifier]; 

UIImageView *imgView; 
if(cell == nil) 
{ 
    cell = [[[UITableViewCell alloc] initWithFrame:CGRectZero reuseIdentifier:CellIdentifier] autorelease]; 

    imgView = [[UIImageView alloc] initWithFrame:(100,0,100,62)]; 
    [imgView setImage:[UIImage imageNamed:@"img.png"]]; 
    imgView.tag = 55; 
    [cell.contentView addSubview:imgView]; 
    [imgView release]; 
} 
else 
{ 
    imgView = (id)[cell.contentView viewWithTag:55]; 
} 
0

이미지 수정 크기를 사용할 수 있습니다

UIImageView *imgView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
[imgview setImage:image]; 
[cell addSubview:imgView]; 
[imgView release]; 
+0

질문의 목적은 이것을 피하는 것입니다. –

0

이 모든 셀에 대한 이미지 뷰를 제공하는 내장 기능입니다. 프레임은 하위 클래스가 아닌 한 변경할 수 없습니다.

그러나, 단순히 방법에서 다음 코드를 추가하여 자신의 imageViews 중 하나를 추가 할 수 있습니다

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath 
{ 
    NSString* cellIdentifier = @"cellIdentifier"; 
    UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellIdentifier]; 

    if(cell == nil) 
    { 
     cell = (UITableViewCell*) [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cellIdentifier]; 
     UIImageView* *myView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, 50, 50)]; 
     [myView setImage:image]; 
     myView.tag = 123; 

     [cell.contentView addSubview:myView]; 
     [myView release]; 
    } 
    else 
    { 
     myView = (UIImageView*) [cell.contentView viewWithTag:123]; 
    } 
} 
당신은 UIView의 예에서 방법을 .transform 사용할 수 있습니다
6

cell.imageView.transform = CGAffineTransformMakeScale(0.65, 0.65); 

// 경우 UITableViewCell을 하위 클래스화할 수 있습니다.

- (void)layoutSubviews { 

    [super layoutSubviews]; 
    self.imageView.bounds = CGRectMake(10,5,65,65); 
    self.imageView.frame = CGRectMake(10,5,65,65); 
    self.imageView.contentMode = UIViewContentModeScaleAspectFit; 

    if (self.imageView.image) { 
     //TODO: adjust the textLabel and detailTextLabel 
    } 

} 
+1

많이보고 나서 이미지 뷰의 크기를 조정하거나 UIView를 사용하여 테이블 셀을 사용하여 cGAffineTransform 메서드를 사용합니다. 예 : myUiImageView.transform = CGAffineTransformMakeScale (0.65, 0.65); subclassing 및 호출 레이아웃 subviews 나를 위해 작동하지 않았다. –

+0

dequeueReusableCellWithIdentifier :를 사용하고 셀이 화면 밖으로 스크롤하면 셀의 이미지보기에서 변환 설정이 재설정 될 수 있습니다. –

0

여기 내 신속한 솔루션입니다. 문제입니다

// 
// UITableVIewCellBasicWithFixedSizeImage.swift 
// 
// Created by Andrew Ashurow on 4/28/16. 
// Copyright © 2016. All rights reserved. 
// 

class UITableVIewCellBasicWithFixedSizeImage: UITableViewCell { 
     private let 
     IMAGE_VIEW_WIDTH:CGFloat  = 27, 
     TEXT_VIEW_LEFT_INSET:CGFloat = 15 

     override func layoutSubviews() { 
      super.layoutSubviews() 
      if let 
       imageView = imageView, 
       textLabel = textLabel{ 
       //set fixed image width 
       imageView.frame = CGRect(
        origin: imageView.frame.origin, 
        size: CGSize(
         width: IMAGE_VIEW_WIDTH, 
         height: imageView.frame.size.height 
        ) 
       ) 
       imageView.contentMode = .Center 
       imageView.autoresizingMask = .None 

       //calculate textLabel inset 
       textLabel.frame = CGRect(
        origin: CGPoint(
         x: imageView.frame.origin.x + imageView.frame.size.width + TEXT_VIEW_LEFT_INSET, 
         y: textLabel.frame.origin.y 
        ), 
        size: textLabel.frame.size 
       ) 

      } 
     } 
    } 
관련 문제