2016-12-18 13 views
0

Я создал UIProgressView (стиль бара) в Swift 2.2 и теперь хотел бы изменить его высоту. Некоторые другие должности предложили использовать CGAffineTransformScale для изменения высоты. Однако по какой-то причине такой подход не работает, поскольку он не влияет на высоту UIProgressView.Изменение высоты UIProgressView (стиль бара) в Swift

Ниже вы найдете мой код:

let progressBar = UIProgressView(progressViewStyle: .Bar) 
progressBar.progress = 0.5 
progressBar.translatesAutoresizingMaskIntoConstraints = false 
progressBar.transform = CGAffineTransformScale(progressBar.transform, 1, 20) 
self.navigationItem.titleView = progressBar 

Я ценю вашу помощь, спасибо большое!

+0

Попробуйте установить ограничение высоты UIProgressView. – iTamilan

+0

Что именно проблема? Неужели вы этого не видите? вы создаете его программно? –

ответ

4

Вы можете создать подкласс UIProgressView и добавить height свойство:

Результат:

enter image description here

import UIKit 

class CustomProgressView: UIProgressView { 

    var height:CGFloat = 1.0 
    // Do not change this default value, 
    // this will create a bug where your progressview wont work for the first x amount of pixel. 
    // x being the value you put here. 

    override func sizeThatFits(_ size: CGSize) -> CGSize { 
     let size:CGSize = CGSize.init(width: self.frame.size.width, height: height) 

     return size 
    } 

} 

В vc вы парафировать customProgressvView и установить height:

import UIKit 

class ViewController2: UIViewController { 

    override func viewDidLoad() { 
     super.viewDidLoad() 

     let progressBar = CustomProgressView(progressViewStyle: .bar) 
     progressBar.progress = 0.5 
     progressBar.height = 10.0 
     self.navigationItem.titleView = progressBar 

    } 
} 
+0

Большое спасибо за чистое объектно-ориентированное решение! Я изменил параметр ширины, равный size.width, чтобы иметь такую ​​же ширину, как обычно. Когда я пробовал self.frame.size.width, ProgressBar становится намного меньше (около половины обычного размера). У кого-нибудь есть объяснение? – Pisan