2016-11-01 5 views
0

Я сделал пользовательский вид, содержащий некоторые изображения. Но у них странный пограничный сбой: есть смещение от края изображения, показывающего некоторый цвет фона.Странный пограничный сбой ImageView

enter image description here

Это, как я делаю вид на изображение:

 for (index, image) in self.images.enumerated() 
     { 
      if index == maxIndex { 
       break 
      } 

      let imageView = UIImageView(frame: CGRect(x: offsetX, y: 0, width: self.height, height: self.height)) 
      imageView.cornerRadius = self.height/2 
      imageView.contentMode = .scaleAspectFill 
      imageView.image = image 
      imageView.layer.borderColor = UIColor.white.cgColor 
      imageView.layer.borderWidth = 2 
      self.addSubview(imageView) 
      self.imageViews.append(imageView) 

      offsetX += self.height/2 + 5 
     } 

Там нет ни одного мнения под imageviews. Subviews count is 4

+0

мутноватый, что вы просите. Что ты спрашиваешь? Где «глюк», о котором вы говорите? Что за вопрос? – matt

+0

@matt Белая граница имеет небольшое смещение от края – Edward

+0

Итак, ваша проблема в том, что толстое «кольцо» вокруг снаружи изображений не предназначено? Это оно? Не могли бы вы представить, что вы на самом деле хотите сделать? Или, по крайней мере, описать это? – matt

ответ

1

Это проблема с псевдонимом. Некоторые краевые пиксели границы полупрозрачны, и из-за этого вы можете видеть содержимое подстилающего слоя.

Вы можете попробовать добавить пользовательский CAShapeLayer с окружностью пути:

let border = CAShapeLayer() 
border.frame = imageView.bounds 
border.lineWidth = 4 //doubled width 
border.path = UIBezierPath(ovalIn: border.bounds).cgPath 
border.strokeColor = UIColor.white.cgColor 
border.fillColor = UIColor.clear.cgColor 
imageView.layer.addSublayer(border) 
+0

Спасибо за ответ! Расширение не помогло. Я попробую пользовательский слой. – Edward

+1

Добро пожаловать. Обновлен ответ с кодом. – alexburtnik

+0

Работает как шарм, еще раз спасибо: 3 – Edward