2017-05-30 11 views
1

私は考えられることを試みていますが、開始方法はわかりません。マスクされたUIViewを作成します。

私はUIViewを作成しましたが、色で塗りつぶしても構いませんが、画像マスクで定義された形にします。すなわち、私はアルファとPNGを持って、私はそのPNGの形でUIColor.blueであるために作成したUIViewが欲しいです。

私がどれほどばかげているかを見るには、私が今まで試みてきた絶対的なごみがあります。単純な四角形を生成しようとすると私にとってはうまくいかないので、すべてコメントアウトします。

let rocketColourList: [UIColor] = [UIColor.blue, UIColor.red, UIColor.green, UIColor.purple, UIColor.orange] 
    var rocketColourNum: Int = 0 
    var rocketAngleNum: Int = 0 
    var rocketAngle: Double { 
     return Double(rocketAngleNum) * Double.pi/4 
    } 
    var rocketColour = UIColor.black 
    public func drawRocket(){ 
     rocketColour.set() 
     self.clipsToBounds = true 
     self.backgroundColor = UIColor.red 
     imageView.image = UIImage(named: ("rocketMask")) 
     addSubview(imageView) 
     //maskimage.frame = self.frame 
     //let someRect = CGRect (x: 1, y: 1, width: 1000, height: 1000) 
     //let someRect = CGRect (self.frame) 
     //let fillPath = UIBezierPath(rect:someRect) 
     //fillPath.fill() 
     //setNeedsDisplay() 

    } 
} 
+0

あなたは常にテンプレートと設定するだけで、画像のレンダリングモードを設定し、任意のマスキングを行う必要はありません。画像ビューの色合いです。 – dan

+0

これを行う方法はわかりませんが、おかげで – Idiot

+0

あなたの記事をトピックにしておき、問題の気持ちを教えてください。また、このコードが何をしていないのかを教えてもらうと助けになります。 – Graham

答えて

1

イメージをテンプレートとして設定し、UIImageViewの色合いを設定します。そのような何か:

guard let let image = UIImage(named: "rocketMask")?.withRenderingMode(.alwaysTemplate) else { return } 
imageView.image = image 
imageView.tintColor = .blue 

また、あなたは、画像資産を通じてそれを行うことができます。 enter image description here

+0

この試みに感謝しますが、そのすべてがその横に赤い点で戻ってきます。プロパティに割り当てることはできません: 'renderingMode'はget-onlyです... 瞬時に赤い点が少し詰まっています – Idiot

+0

@Idiot sry、答えが固定 –

関連する問題