2016-02-24 12 views
0

У меня фоновое изображение с расширением UIView.Swift/cut background image

extension UIView { 
    func addBackground() { 
     // screen width and height: 
     let width = UIScreen.mainScreen().bounds.size.width 
     let height = UIScreen.mainScreen().bounds.size.height 

     let imageViewBackground = UIImageView(frame: CGRectMake(0, 0, width, height)) 
     imageViewBackground.image = UIImage(named: "index_clear") 

     // you can change the content mode: 
     imageViewBackground.contentMode = UIViewContentMode.ScaleAspectFill 
     self.addSubview(imageViewBackground) 
     self.sendSubviewToBack(imageViewBackground) 
    }} 

Для анимации segue вид перемещается слева направо. Фоновое изображение больше, чем экран, что видно во время анимации.

Как можно вырезать фоновое изображение, чтобы идеально вписаться в представление? .ScaleAspectFit выполняет эту работу, но поскольку это картина, она выглядит плохо.

Справка очень приветствуется.

+0

'.ScaleAspectFill' не изменит пропорции, так что это не приведет к искажению изображения но он обрезает части изображения, которые не соответствуют – Paulw11

+0

нет, это не так. например, я сказал, что представление перемещается внутри анимации с помощью secondVC.frame = CGRectOffset (firstVC.frame, -screenWidth + screenWidth, 0.0), и видно, что фоновое изображение примерно в 3 раза больше, чем вид –

+0

Вы установили ' clipsToBounds = true' на изображении? – Paulw11

ответ

1

Вы можете использовать .ScaleAspectFill, чтобы обрезать изображение, а не масштабировать его. Это не исказит ваш образ, но, очевидно, вы не сможете увидеть все это.

Вы должны убедиться, что вы установили clipsToBounds=true на UIImageView так, что обрезанные область не видна

extension UIView { 
    func addBackground() { 
     // screen width and height: 
     let width = UIScreen.mainScreen().bounds.size.width 
     let height = UIScreen.mainScreen().bounds.size.height 

     let imageViewBackground = UIImageView(frame: CGRectMake(0, 0, width, height)) 
     imageViewBackground.image = UIImage(named: "index_clear") 

     // you can change the content mode: 
     imageViewBackground.contentMode = UIViewContentMode.ScaleAspectFill 
     imageViewBackground.clipsToBounds=true 
     self.addSubview(imageViewBackground) 
     self.sendSubviewToBack(imageViewBackground) 
    }