2017-11-20 4 views
0

私は今、オーディオレコーダーアプリを作ることを学んでいます。基本的には、UIViewにタップジェスチャーを追加して、録画をトリガー/ストップします。レコーダーを起動したら、イメージを別のレコーダーに変更する必要があります。私の質問は:Swift UIImageをボタンとして

2つの@IBAction関数をドラッグするか、1つのみをドラッグすると思いますか?どのように "トリガー"と "停止"アクションを区別するには?私の推測では、私はただ一つの機能しか必要としないかもしれない、そして、それの始めに、私は画像の名前をチェックする:それが録画アイコンか停止アイコンであれば、それに応じて何かをする。しかし、私はUIImageに含まれているイメージを識別するためのプロパティを見つけることができません。

これは良い質問ではないかもしれませんので、私はiosを使い慣れていますが、私に同行してください。ところで、私はインターフェイスビルダを使ってこれをやっています。

+0

以下のようにそのボタンのアクションを割り当てます。 –

答えて

1

あなたはUIImageViewhighlightedImageisHighlightedプロパティを使用してこれを行います。そして、あなたはviewDidLoad方法では、単一のIBAction

を使用してこれを行うことができます。

yourImageView.image = UIImage(name:"RecordImage/TriggerImage") 
yourImageView.highlightedImage = UIImage(name:"StopImage") 

あなたはあまりにもインターフェイスビルダーでこれらの画像を設定することができます。次の画像でわかるように、ImageHighlightedの両方のプロパティの画像を設定する必要があります。 - チェックされている場合は、ボタン

の状態を確認するためのViewControllerクラスのプロパティを宣言= //真の記録が起こっている

yourImageView.isHighlighted = !yourImageView.isHighlighted 

if yourImageView.isHighlighted 
{ 
    //so now the UIImageView shows stop image that means we are in recording mode 
    // do the actions that are to be done in recording mode like start recording updating other UI etc 
} 
else 
{ 
//so now the UIImageView shows Record/Trigger image that means are in normal mode or not recording 
    // do the actions that are to be done in normal mode like stop recording (if required)updating other UI etc 
} 
+0

ありがとうございます。それはうまくいく。だから、インターフェイスビルダーでは、私はちょうど "初期"の画像を設定し、コードの別のものに変更するか、何らかの形でインターフェイスビルダで両方の画像を設定することができますか? –

+0

更新された回答には、UIImageViewの強調表示画像の設定方法を示す画像が含まれています – raki

1

あなたは、同じのための1 IBActionを必要としますが、アクション内の次のコードを介して画像を確認することができます。

if yourImageView.image == UIImage(named: "yourImageName") { 
//perform some action here 
} else { 
//perform some action here 
} 
+0

あなたはUIImageをStringと比較しています。それが正しいか ? – raki

+0

実際には、3速スウィフト4では、画像を直接パースすることも、UIImage( "yourImageName"という名前)によって画像を確認することもできます。また、編集された答えを確認してください。 –

+0

文字列エラーでUIImageを比較しているようです...編集された答えはうまく動作します –

1

ステップ1:あなたのアクションメソッド内

UIImageView interface builder

false //録画を停止した場合

//declaration in ViewController class 
    var isChecked = false 

ステップ2 - ボタンImageViewのを追加して、オンまたはオフの記録の状態を切り替えるためにフラグを使用しない理由

@IBAction func BottomImageBtnAction(_ sender: UIButton) { 
     isChecked = !isChecked 
     if isChecked { 
      //here şet image as stop 
     } 
     else { 
      //here set image as Start 
     } 
    } 
+0

これはグローバル変数宣言ではありません。これはView Controllerのインスタンスプロパティです。 –

+0

大丈夫それをもっと明確にさせてください –

+0

これはグローバルではありません。グローバル変数は、アプリのどこにでもアクセスできます。 –

関連する問題