2017-01-09 5 views
0

をリサイズすることができない私はImageViewのを有し、かつ上にUIViewのサブクラスです落書きビューをしようとしていますそれは単純なことでなければなりませんが、私は手掛かりを見つけることができなかった、カスタムビュー - UIViewのサブクラスが

落書きを許すように落書きの表示のサイズを変更する以外はすべて正常に動作しますが、画面全体を常に占めていますが、それを小さくすることはできませんでした。

class ScribbleView: UIView 
{ 
    let backgroundLayer1 = CAShapeLayer() 

    required init() 
    { 
     // super.init(frame: CGRect.zero) 
     super.init(frame: CGRect(x: 0, y: 0, width: 100, height: 100)) 
     layer.addSublayer(backgroundLayer1) 
     layer.masksToBounds = true 

    } 



class HermiteScribbleView: ScribbleView, Scribblable 
{ 

    required init() { 
     print ("calling parent") 
     super.init() 

    } 

} 

/**メインコード**/

let hermiteScribbleView = HermiteScribbleView() 
hermiteScribbleView.backgroundColor = .red 

     // imgView.autoresizesSubviews = true 
     // hermiteScribbleView.autoresizingMask = [.flexibleHeight, .flexibleWidth] 


    //once this is done, hermieScribbleView is always stretched to full width and height no matter what I try 
     imgView.addSubview(hermiteScribbleView) 
+1

imgViewとhermiteScribbleViewの両方のフレームを記録すると、 'addSubview()'の直後にどのような結果が得られますか? –

+1

(1)自動レイアウトを使用していない、(2)重要な可能性のある特定のビュー/レイヤーでフレームを設定するなど、いくつかのコードを取り除いたとします。私も完全なビュー階層を把握することができないので、これは基本ではないかもしれません。しかし、あなたのScribbleView、UIViewは、UIImageViewのサブビューです(あなたの説明が言うようです)...なぜかすべてをカスタムUIImageViewにしてからlayoutSubviewsでフレームを同じにするのはなぜですか?必要に応じて空想的なものを一度設定することもできます。 – dfd

+0

私はviewdidload()の後プロパティを宣言していない間ScribbleViewを初期化しなければなりませんでしたが、他のメソッドでアクセスするにはプロパティとして必要ですが、頭を上げていただきありがとうございます。 –

答えて

1

どのような私は上記の情報から推測すると、UIViewの枠を設定するUIImageViewのフレームを使用している場合があります、ということです。 UIViewのサイズをUIImageと同じに設定する必要があります。

  • imgImageView.image.size

及び第二UIImageViewの中心と同じUIViewの中心を設定します。 これがうまくいくと思います。

関連する問題