2017-03-28 8 views
0

私はSwiftで単純なアプリケーションを構築しています。このアプリケーションには、png画像、UISegmentedControl、およびUIButtonが含まれています。 UISegmentedControlのさまざまなコントロールを選択すると、ピザの画像がサイズ変更されます。 UISegmentedControlで "Large"をクリックした後、submitOrderDisplayというインターフェースのボタンを押すと、イメージが大きなサイズから小さなサイズに縮小されます。私はコードの一番下にあるsetTitleメソッドと何か関係があると知っていますが、なぜイメージがデフォルトの小さなサイズにリセットされるのか理解できません。 setTitleメソッドを削除した場合、UIButtonをクリックするとサイズ変更が行われません。ボタンを押した後に画像のサイズを変更したくない。どのように達成するのですか?UIButtonがSwiftのUIImageViewに影響するのはなぜですか?

import UIKit 

class SecondViewController: UIViewController{ 


@IBOutlet weak var sizeChoiceControl: UISegmentedControl! 
@IBOutlet weak var submitOrderDisplay: UIButton! 
@IBOutlet weak var myImageView: UIImageView! 


@IBAction func sizeSelected() { 

    if(sizeChoiceControl.titleForSegmentAtIndex(sizeChoiceControl.selectedSegmentIndex)! == "Small"){ 
     myImageView.setHeight(height: 85) 
     myImageView.setWidth(width: 85) 
     myImageView.setX(x: 146) 
     myImageView.setY(y: 63) 
    } 
    else if(sizeChoiceControl.titleForSegmentAtIndex(sizeChoiceControl.selectedSegmentIndex)! == "Medium"){ 
     myImageView.setHeight(height: 100) 
     myImageView.setWidth(width: 100) 
     myImageView.setX(x: 139) 
     myImageView.setY(y: 55) 
    } 
    else if(sizeChoiceControl.titleForSegmentAtIndex(sizeChoiceControl.selectedSegmentIndex)! == "Large"){ 
     myImageView.setHeight(height: 115) 
     myImageView.setWidth(width: 115) 
     myImageView.setX(x: 131) 
     myImageView.setY(y: 48) 
    } 
} 

@IBAction func SubmitOrderClicked(sender: UIButton) { 

    submitOrderDisplay.setTitle("Update Order", forState: UIControlState.Normal) 
} 
} 
+0

あなたはautolayoutを使用していますか?画像ビューとボタンの間に制約がありますか(多分「同じ幅」など)? –

+0

@AndreasOetjenはい私はautolayoutを使用しています、そのボックスがチェックされています。参照アウトレットでは、myImageViewが「カスタマイズ」に接続されていることがわかります。それが何を意味するかわからない。しかし、私はイメージビューと他のものとの間に他の制約を見ません。 – shampouya

+0

@AndreasOetjen自動レイアウトをオフにしてみましたが、問題を修正しましたが、イメージのサイズ変更を防ぐ唯一の方法ですか?私はautolayoutを使わないと、私のアプリがすべての画面解像度をサポートするのが難しいと読んでいるので、私はそれをオフにすることについて緊張しています。 – shampouya

答えて

0

は、のviewDidLoad関数内のボタンの設定を書く:

submitOrderDisplay.setTitle("Update Order", forState: UIControlState.Normal) 

私はあなたがタイトルアップデート注文を入れたいことを理解しています。

あなたが押されたときにタイトルを変更したい場合は、次のようなボタンの他​​の国のためにそれを呼び出す必要があります:

submitOrderDisplay.setTitle("Update Order", forState: UIControlState.Highlihgted) 

あなたはイベントが発生したさまざまな状態のためのボタンの設定を変更する場合は、そのサイズが再設定されている理由である必要があります。

関連する問題