2016-07-09 3 views
0

Я пытаюсь поместить текст поверх UIImageView внутри элемента управления iCarousel. Существует пример, который делает это, и я использовал один и тот же код, как func carousel(carousel: iCarousel, viewForItemAtIndex index: Int, reusingView view: UIView?) -> UIView, с телом, будучиОтображение текста над изображением в iCarousel control

{ 
    var itemView: UIImageView 
    var name: UILabel 
    if (view == nil) 
    { 
     itemView = UIImageView(frame:CGRectMake(0, 0, 250, 250)) 
     itemView.image = ShareData.sharedInstance.accounts[index].getPicture() 
     itemView.contentMode = .ScaleAspectFit 
     name = UILabel(frame:itemView.bounds) 
     name.backgroundColor = MyVariables.backgroundColor 
     name.textAlignment = .Center 
     name.textColor = MyVariables.outlineColor 
     name.font = name.font.fontWithSize(50) 
     name.tag = 1 
    } 
    else 
    { 
     itemView = view as! UIImageView; 
     name = itemView.viewWithTag(1) as! UILabel! 
    } 
    name.text = ShareData.sharedInstance.accounts[index].accountName 
    return itemView 
} 

Я не уверен, что я делаю неправильно. Очевидно, что переменные разные, но мой код идентичен коду в образце, поскольку я могу без него не делать того, что хочу. Я проверил, и переменная .accountName имеет текст, который он должен иметь, поэтому я знаю, что все в порядке. Любые идеи о том, что может быть неправильно с моим кодом, будут с благодарностью оценены. Благодарю.

ответ

0

Вы должны добавить свой UILabel как subview в UIImageView как этот

if (view == nil) 
{ 
    itemView = UIImageView(frame:CGRectMake(0, 0, 250, 250)) 
    itemView.image = ShareData.sharedInstance.accounts[index].getPicture() 
    itemView.contentMode = .ScaleAspectFit 
    name = UILabel(frame:itemView.bounds) 
    name.backgroundColor = MyVariables.backgroundColor 
    name.textAlignment = .Center 
    name.textColor = MyVariables.outlineColor 
    name.font = name.font.fontWithSize(50) 
    name.tag = 1 

    //You forgot to add this name label in itemView 
    itemView.addSubview(name) 

} 
else 
{ 
    itemView = view as! UIImageView; 
    name = itemView.viewWithTag(1) as! UILabel! 
} 

Надеется, что это поможет вам.

+0

Когда я добавляю эту строку кода, он избавляется от картины и просто показывает текст. Приятно знать, что текст есть, но мне бы очень хотелось увидеть как картинку, так и текст. Спасибо за попытку помочь. –

+0

Я понял. Я должен изменить границы для ярлыка как нечто меньшее, чем прямоугольник для UIImageView. Это решает проблему. Между вашим предложением и уменьшением размера CGRect для ограничений на метку я получил его для работы. =) –

+0

С удовольствием помогите .. :) –

0

Я думаю, что вы получаете ширину и высоту метки 0,0.

name = UILabel(frame:itemView.bounds) 

заменить его ниже линии

name = UILabel(frame:CGRectMake(0, 0, 250, 250)) 
Смежные вопросы