2016-02-16 23 views
0

所有關於SO和網上的類似問題都是關於在UIImageView上放置一個UILabel,這是我熟悉的事情,但是我必須在多個UIImageView上放置多個UILabel 。每個UIImageView上有一個。我有一個循環是這樣的:在for循環內的UIImageView上添加一個UILabel

for(int i=0;i < [arrURL count] ;i++) 
    { 
     UIImageView *view_Image = [[UIImageView alloc]initWithFrame:CGRectMake(x, y, 400, 180)]; 
     y = y + 182; 

     view_Image.image = [UIImage imageWithData:[NSData dataWithContentsOfURL:[NSURL URLWithString:arrURL[i]]]]; 


     UILabel *lblName = [[UILabel alloc] initWithFrame:CGRectMake(view_Image.frame.origin.x, view_Image.frame.origin.y, view_Image.frame.size.width, view_Image.frame.size.height)]; 

     [lblName setText:arrNames[i]]; 
     [view_Image addSubview:lblName]; 
     [mainScroll addSubview:view_Image]; 
    } 

當我運行的代碼,在上的UILabel只出現在第一的UIImageView,爲的UIImageView出現在的UILabel的頂部的休息。 (我通過向UILabel添加背景顏色發現了這一點)。我如何使UILabel出現在UIImageView上。提前致謝。

+0

我不認爲這是在每個'UIImageView'上放置標籤的最好方法...子類化將是一個更爲簡潔的方法。 – Hamish

回答

1

視圖的框架在它的超視圖座標系中。所以每個圖像視圖的幀都在mainScroll的座標系中。

由於每個標籤都是單獨圖像視圖的子視圖,因此每個標籤的框架都位於其父圖像視圖的座標系中。但是您的行爲好像標籤的框架位於mainScroll的座標中。

UILabel *lblName = [[UILabel alloc] initWithFrame:view_Image.bounds];