2016-09-05 3 views
0

У меня есть UIImageView в tableviewcell и имеют режим содержания установлен в scaleAspectFill:UIImageView Выравнивание

let imageSize = CGSize(width: 70, height: 70) 
MenuImage.contentMode = .scaleAspectFill 

if(self.reuseIdentifier == "cell1") { 
    MenuImage.image = UIImage.imageWithIonicon(.Map, color: UIColor.white, iconSize: 70, imageSize: imageSize) 
} 
else if (self.reuseIdentifier == "cell2") { 
    MenuImage.image = UIImage.imageWithIonicon(.iOSPerson, color: UIColor.white, iconSize: 70, imageSize: imageSize) 

} 
else if (self.reuseIdentifier == "cell3") { 
    MenuImage.image = UIImage.imageWithIonicon(.iOSHelp, color: UIColor.white, iconSize: 70, imageSize: imageSize) 
} 

Хотя это вписывает изображение красиво в камеру, изображение появляется, чтобы выровнять на дно. Есть ли способ, чтобы получить его центр по вертикали в пределах UIImageView (коричневый фон просто так я могу проверить размер представления изображения)

enter image description here

+1

Что случилось с '.scaleAspectFit'? – ozgur

+0

оба, похоже, дают похожие результаты (выровнены снизу) –

ответ

1

Согласно This для того, чтобы зафиксировать вертикальное выравнивание, в файле «ionicons.swift» вы должны изменить эту строку:

attString.drawInRect(CGRect(x: (imageSize.width/2) - boundingRect.size.width/2, y: (imageSize.height/2) - boundingRect.size.height/2, width: imageSize.width, height: imageSize.height)) 

к

attString.drawInRect(CGRect(x: (imageSize.width/2) - (boundingRect.size.width/2), y: (imageSize.height/2) - (iconSize/2), width: imageSize.width, height: imageSize.height)) 

* Swift версии 3.0, замените это:

attString.draw(in: CGRect(x: (imageSize.width/2) - boundingRect.size.width/2, y: (imageSize.height/2) - boundingRect.size.height/2, width: imageSize.width, height: imageSize.height)) 

с

attString.draw(in: CGRect(x: (imageSize.width/2) - (boundingRect.size.width/2), y: (imageSize.height/2) - (iconSize/2), width: imageSize.width, height: imageSize.height)) 
+0

Отлично работает. даже не думал о том, что это проблема с IocIcons –

0

Это пример об ограничениях и анкеров:

self.addSubview(containerView) 
containerView.addSubview(yourImageView) 

containerView.bottomAnchor.constraintEqualToAnchor(self.bottomAnchor).active=true 
containerView.leftAnchor.constraintEqualToAnchor(self.leftAnchor).active=true 

yourImageView.topAnchor.constraintEqualToAnchor(containerView.topAnchor).active=true 
yourImageView.leftAnchor.constraintEqualToAnchor(containerView.leftAnchor).active=true 
yourImageView.widthAnchor.constraintEqualToConstant(70).active=true 
yourImageView.heightAnchor.constraintEqualToConstant(70).active=true 
+0

Спасибо, вот что я подумал сначала (вот почему я сменил UIImageView на коричневый фон с MenuImage.backgroundColor = UIColor.brown). Сам UIImageView кажется правильным, и в правильном месте, когда программно добавляется изображение, фактическое изображение выравнивается в нижней части UIImageView. Я попробовал ваше предложение (с некоторыми изменениями для Swift 3.0), и фактическое изображение по-прежнему не сосредоточено в представлении. –

Смежные вопросы