【Swift】SegmentとProgressの高さを変更する方法

どうも、ねこきち(@nekokichi1_yos2)です。

 

UISegmentControlやUIProgressViewなど、一部のUIには高さ(もしくは幅)を変更できないUIがあります。

f:id:nekokichi_yos2:20200725110647p:plain

 

ですが、見た目の高さを変更することは可能です。

 

 

解説

 

使用するのは、transform.scaledBy(x: , y: )

segment.transform = segment.transform.scaledBy(x: 1, y: 2)

 

transformは、Viewの拡大や回転を司るプロパティ。

 

scaledByは、幅や高さを拡大させるプロパティ

(2なら2倍、4なら4倍に拡大させる)

 

あくまで、”見た目”の高さだけ変更してるだけなので、ご注意を。

 

(他にも、AutoLayoutやLayerを駆使した方法もある。)

(参考)

stackoverflow.com

 

結果

 

 変更前

f:id:nekokichi_yos2:20200725101633p:plain

 

変更後

f:id:nekokichi_yos2:20200725101636p:plain

 

ソースコード

 

import UIKit

class test1: UIViewController {
    
    @IBOutlet weak var progress: UIProgressView!
    @IBOutlet weak var segment: UISegmentedControl!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        progress.transform = progress.transform.scaledBy(x: 1, y: 10)
        segment.transform = segment.transform.scaledBy(x: 1, y: 2)
    }
    
}