2016-12-20 4 views
1

の乗数値を変更します。各タイトルの下に小さなバーがあり、Youtubeアプリと同様に、ユーザーがどのページ/アイテムを表示しているかを示します。は、私は約30ピクセルの高 、いくつかの異なるタイトルでCollectionViewControllerの一番上に座ってメニューバーを持っている制約

horizontalBarWidthAnchorConstraintの乗数値は、ハードので horizontalBarWidthAnchorConstraintの乗数を変更しようとしてきた、私は別のビューコントローラ全体ビューを複数回再利用したい1/4

の価値ででコーディングされている

class MenuBar : UIView { 

var menuSectionTitles = ["Title1","Title2", "Title3","Title4"] 

var numberOfSectionsInHorizontalBar : CGFloat? 

var horizontalBarLeftAnchorConstraint: NSLayoutConstraint? 
var horizontalBarWidthAnchorConstraint: NSLayoutConstraint? 

override init(frame: CGRect) { 
    super.init(frame: frame) 
    setupHorizontalBar() 
} 

required init?(coder aDecoder: NSCoder) { 
    fatalError("init(coder:) has not been implemented") 
} 

func setupHorizontalBar() { 
    let horizontalBarView = UIView() 
    horizontalBarView.backgroundColor = UIColor.rgb(10, green: 150, blue: 255) 
    horizontalBarView.translatesAutoresizingMaskIntoConstraints = false 
    addSubview(horizontalBarView) 

    horizontalBarLeftAnchorConstraint = horizontalBarView.leftAnchor.constraint(equalTo: self.leftAnchor) 
    horizontalBarLeftAnchorConstraint?.isActive = true 

    horizontalBarView.bottomAnchor.constraint(equalTo: self.bottomAnchor).isActive = true 

    // Set the multiplier/width of the horizontal bar to indicate which page the user is on 
    horizontalBarWidthAnchorConstraint = horizontalBarView.widthAnchor.constraint(equalTo: widthAnchor, multiplier: 1/4) 
    horizontalBarWidthAnchorConstraint?.isActive = true 

    horizontalBarView.heightAnchor.constraint(equalToConstant: 3).isActive = true 
    } 
} 

そう:

class ViewController: UICollectionViewController { 

lazy var menuBar : MenuBar = { 
    let mb = OptionsBar() 
    mb.menuOptions = ["Title1", "Title2", "Title3"] 
    mb.translatesAutoresizingMaskIntoConstraints = false 
    mb.horizontalBarWidthAnchorConstraint?.constant = 1/3 
    return mb 
}() 
} 

しかし、この方法は機能しません。私は、ViewController内部から乗数の値を変更する方法を見つけることができません。ここでのコードでは

答えて

1

あなたは制約はなく、multiplierconstantを変更しています。あれは正しいですか?また

注意し、制約のmultiplierは読み取り専用です。それを変更することはできません。ビューに適用される制約のmultiplierを変更する場合は、新しい乗数で新しい制約を追加し、古い制約を削除します。

読み取り/書き込みの制約の一部は、constantプロパティです。

+0

は理にかなって、このからの完全な答えを思い付くために管理:)あなたは、私は正しい答えマークされますができれば、あなたの答えに私の編集が正しいことを確認してください – luke

関連する問題