2017-08-23 33 views
2

我試圖使用UISlider更改UIImageView中的指定圖像大小。 滑塊的取值範圍爲0〜100. 所以我的想法是,如果我將滑塊移動得更小,指定的圖片顯示的更小,而且如果我將滑塊移動得更大,則圖片的尺寸會變大。如何使用UISlider在Swift中以編程方式更改UIImageView中的指定圖像大小

這是當圖像變得越來越小的情況下: getting smaller image by UISlider

這就是當圖像越來越大的情況下: getting bigger image by UISlider

是否有人可以幫忙嗎?基於滑塊的值

+1

OK,你可以考慮在其滾動型和ImageView的做到這一點,並使用滾動視圖的委託方法你爲什麼不使用滾動視圖,而不是圖像來實現這一功能 –

+0

? –

+0

你的意思是使用滾動視圖,而不是imageview? 我會試試看。 –

回答

1

使滑塊的值範圍從.01 1.0(.01應該更好地工作比0 )

控制 - 從滑塊拖動到您的視圖控制器,並在滑塊的valueChanged事件上創建一個動作。我們稱之爲sliderChanged

在滑塊的操作方法,改變圖像規模來看:

@IBOutlet myImageView: UIImageView* 


@IBAction func sliderChanged(sender: UISlider) { 
    let scale = sender.value 
    let transform = CGAffineTransform.scale(scaleX: scale, y: scale) 
    myImageView.transform = transform 
} 

應該這樣做。

+0

哇!大。有用!謝謝,鄧肯! –

0
  1. 更新幀

  2. 嘗試UISlider的值用的UIImageView的約束乘以

1

您將需要添加寬度寬高比約束圖像視圖 - 和明顯的其他所需的必要constraints-:

enter image description here

在我的例子,這些都是制約圖像視圖:

enter image description here

接下來,你可以implemnt的以下:

class ViewController: UIViewController { 

    @IBOutlet weak var slider: UISlider! 
    @IBOutlet weak var imageViewWidth: NSLayoutConstraint! 
    @IBOutlet weak var imageView: UIImageView! 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     slider.maximumValue = 100.0 
     slider.value = 0.0 
     imageViewWidth.constant = 20 
    } 

    @IBAction func sliderValueChanged(_ sender: Any) { 
     imageViewWidth.constant = CGFloat(20 + slider.value) 
    } 
} 

imageViewWidth IBOutlet中會要調整圖片大小,視圖的寬度約束。

輸出:

enter image description here

+0

感謝您的回答。這是我想要的。你可以實現編程嗎? –

+0

很高興幫助! 「你可以實現編程嗎?「我沒有得到:)你仍然有任何問題嗎? –

+0

這不是通過編程實現的,但它的工作原理,感謝你的努力,艾哈邁德。 –

相關問題