iOS의 사용자 정의 TableViewCell에서 이미지에 텍스트 레이블을 추가하려면 어떻게해야합니까?

Bharat_K

안녕하세요, 저는 iOS 개발이 처음입니다. 이제 사용자 정의 tableView를 작업 중입니다.이 작업에서는 사용자 정의 tableViewCell을 사용하고 있습니다. 해당 셀에서 imageView에 텍스트 레이블을 추가하고 있습니다. 그러나 이미지보기에 텍스트 레이블이 표시되지 않습니다. 이미지 만 표시됩니다. 누구든지이 문제에 대한 해결책이 있다면 저를 도와주세요.

여기 내 코드입니다

- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
    static NSString *CellIdentifier = @"MyCell";
    ItemsCellVC *cell = (ItemsCellVC *)[TableView dequeueReusableCellWithIdentifier:CellIdentifier];

    if (cell == nil) {
        cell = [[ItemsCellVC alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier];


    }

    UIImage *background = [self cellBackgroundForRowAtIndexPath:indexPath];
    UIImageView *cellBackgroundView = [[UIImageView alloc] initWithImage:background];
    cellBackgroundView.image = background;
    cell.backgroundView = cellBackgroundView;





    if ([arrayForItemDictionary count]!=0) {

    if (tableView == aSearchDisplayController.searchResultsTableView)
      {
        dictItemFromDatabase=[filteredListContent objectAtIndex:indexPath.row];
      }
    else
       {
        dictItemFromDatabase=[arrayForItemDictionary objectAtIndex:indexPath.row];
       }

   }




    //cell.containerNameLabel.text=[dictItemFromDatabase valueForKey:@"PickerName"];
    cell.itemNameLabel.text = [dictItemFromDatabase valueForKey:@"ItemNameTF"];
    cell.containerImgView.image = [UIImage imageNamed:@"12-02 (1)"];

  UIImage *image = [UIImage imageNamed:@"2-02 (1).png"];

   cell.containerImgView.image = [self addText:image text:@"Hello there"];



    return cell;
}


-(UIImage *)addText:(UIImage *)img text:(NSString *)text1{

    int w = img.size.width;
    int h = img.size.height;
    CGColorSpaceRef colorSpace = CGColorSpaceCreateDeviceRGB();
    CGContextRef context = CGBitmapContextCreate(NULL, w, h, 8, 4 * w, colorSpace, kCGImageAlphaPremultipliedFirst);
    CGContextDrawImage(context, CGRectMake(0, 0, w, h), img.CGImage);

    char* text= (char *)[text1 cStringUsingEncoding:NSASCIIStringEncoding];
    CGContextSelectFont(context, "Arial",20, kCGEncodingMacRoman);
    CGContextSetTextDrawingMode(context, kCGTextFill);
    CGContextSetRGBFillColor(context, 0, 0, 0, 1);
    CGContextShowTextAtPoint(context,10,10,text, strlen(text));
    CGImageRef imgCombined = CGBitmapContextCreateImage(context);

    CGContextRelease(context);
    CGColorSpaceRelease(colorSpace);

    UIImage *retImage = [UIImage imageWithCGImage:imgCombined];
    CGImageRelease(imgCombined);

    return retImage;
}
Bharat_K

열심히 노력한 후이 해결책을 얻었습니다.

이 방법을 tableViewCellVC.m 파일에서 사용했습니다.

@implementation UIImage (DrawWatermarkText)
-(UIImage*)drawWatermarkText:(NSString*)text {
 UIColor *textColor = [UIColor grayColor];//[UIColor colorWithWhite:0 alpha:0.1];
UIFont *font = [UIFont systemFontOfSize:400];
//  CGFloat paddingX = 50.f;
CGFloat paddingY = 200.f;

// Compute rect to draw the text inside
CGSize imageSize = self.size;
NSDictionary *attr = @{NSForegroundColorAttributeName: textColor, NSFontAttributeName: font};
CGSize textSize = [text sizeWithAttributes:attr];

// CGRect textRect = CGRectMake(imageSize.width - textSize.width - paddingX, imageSize.height - textSize.height - paddingY-50, textSize.width, textSize.height);

CGRect textRect = CGRectMake(imageSize.width - 1900, imageSize.height - textSize.height - paddingY, textSize.width, textSize.height);

// Create the image
UIGraphicsBeginImageContext(imageSize);
[self drawInRect:CGRectMake(0, 0, imageSize.width, imageSize.height)];
[text drawInRect:CGRectIntegral(textRect) withAttributes:attr];
UIImage *resultImage = UIGraphicsGetImageFromCurrentImageContext();
UIGraphicsEndImageContext();
return resultImage;}@end

later on i had write following code in tableViewCellVC.h file as

@interface UIImage (DrawWatermarkText)
-(UIImage*)drawWatermarkText:(NSString*)text;
  @end
And Finally in cellforRowAtIndexPath in tavelVC.m call this method only

 UIImage *image = [UIImage imageNamed:@"12-02 (1)"];

cell.containerImgView.image  = [image drawWatermarkText:@"Bharat"];

그런 다음 그 작품

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

Related 관련 기사

뜨겁다태그

보관