2017-05-27 7 views
0

UIImageViewのレイヤーをアニメーション化せずに、UIImageView内部のビューをアニメーション化できるかどうかは疑問です。私は境界線をアニメートしないようにしたい、そしてイメージを境界線にクリップするが、イメージは必要に応じてフェードインとフェードインしたい。swift 3フェードイメージ、UIImageレイヤーではありません

私はこのようなアニメーションだ:

func animateStart() { 
    UIView.animate(withDuration: 3, animations: { 
     self.firstImg.image = UIImage(named:"peter.JPG") 
     self.firstImg.alpha = 1 
    }, completion: { finished in 
     if finished { 
      self.animateSecond() 
     } 
    }) 
} 

設定国境のように:

class RoundedImage: UIImageView { 

    override func awakeFromNib() { 
    self.layer.borderWidth = 5 
    self.layer.borderColor = UIColor.darkGray.cgColor 
    self.layer.cornerRadius = 15 
    self.clipsToBounds = true 
    } 
+0

私はあなたがそれを行うことはできないと思います。ボーダーが設定された同じサイズのUIViewに、あなたのimageViewをサブビューとして追加します。また、その内部にイメージビューをアニメートします。 –

答えて

2

画像ビュー上の境界線をしないでください。

境界線をUIViewに配置し、その上に画像ビューを追加します。

イメージビューをアニメーション化してフェードアウトすると、次のようになります。それが内部にあるという見解は残るでしょう。

+1

ありがとう、私は本当にこのソリューションが好きです。私はオンラインで何回コースを受講したのか、またどれもUIViewを通過したコースはないと信じられません。今では私が使ったのは、基本的なデザインのようなものです – froggomad

+1

これはこのようなカスタムビヘイビアを作成するのに非常に適しています。 UIImageViewは、UIViewの1つのカスタム動作です。サブクラスの代わりに、私はUIImageViewを取得しました。代わりにUIViewをサブクラス化して、既にそこにイメージビューを持つコンテナを作成することができます。今では境界線を持ち、フェード可能な画像を表示できる単一のビューを持っています:-) – Fogmeister

0

imageViewのコンテナとしてUIViewを使用し、その中にimageViewを配置してください。イメージビューに必要なアニメーションを作成してください(フェードインフェードアウト)。フェード後

enter image description here

を:

そして、あなたはImageViewのフレームを取得するフェード前

(実際には、それはあなたのImageViewののコンテナを務めたのUIViewだったの後ろに、ではありません)

enter image description here

ビュー階層:

enter image description here

+0

詳細な答えをありがとう – froggomad

関連する問題