2016-08-17 67 views
1

我有一個由google設計材質框架創建的自定義工具欄。另外,我想在工具欄中實現3個按鈕(左側,中間和右側)。但是,我只能找到.rightControl.leftControl。它只能將按鈕放在右側或左側。 我想在中心實施一個。我怎麼能編程?在自定義工具欄中快速定位按鈕(Google設計素材)

private var toolbar: Toolbar! 


private func prepareToolbar() { 
toolbar = Toolbar() 

toolbar.width = 400 
toolbar.height = 80.0 




let image: UIImage? = MaterialIcon.cm.settings 
let logoBtn = UIImage(named: "buttonlogo") as UIImage? 

// Menu button. 
let menuButton: IconButton = IconButton() 
menuButton.pulseColor = MaterialColor.white 
menuButton.tintColor = MaterialColor.white 
menuButton.setImage(image, forState: .Normal) 
menuButton.setImage(image, forState: .Highlighted) 

let logoButton: IconButton = IconButton() 
logoButton.setImage(logoBtn, forState: .Normal) 

    let searchButton: IconButton = IconButton() 
    searchButton.pulseColor = MaterialColor.white 
    searchButton.tintColor = MaterialColor.white 
    searchButton.setImage(image, forState: .Normal) 
    searchButton.setImage(image, forState: .Highlighted) 


toolbar.rightControls = [logoButton] 
//toolbar.rightControls = [searchButton] <--------- 
toolbar.leftControls = [menuButton] 


view.addSubview(toolbar) 


} 

回答

1

試試這個:

ViewController.swift

import UIKit 
import Material 

class ViewController: UIViewController { 
/// Reference for containerView. 
private var containerView: UIView! 

/// Reference for Toolbar. 
private var toolbar: Toolbar! 

let addButton: IconButton = IconButton() 

override func viewDidLoad() { 
    super.viewDidLoad() 
    prepareView() 
    prepareContainerView() 
    prepareToolbar() 
} 

/// General preparation statements. 
private func prepareView() { 
    view.backgroundColor = MaterialColor.white 
} 

/// Prepares the containerView. 
private func prepareContainerView() { 
    containerView = UIView() 
    view.layout(containerView).edges(top: 100, left: 20, right: 20) 
} 

/// Prepares the toolbar 
private func prepareToolbar() { 
    toolbar = Toolbar() 
    containerView.addSubview(toolbar) 

    // Title label. 
    toolbar.title = " " 
    toolbar.titleLabel.textColor = MaterialColor.white 
    toolbar.titleLabel.textAlignment = .Center 

    // Detail label. 
    //toolbar.detail = "Build Beautiful Software" 
    //toolbar.detailLabel.textColor = MaterialColor.white 

    var image: UIImage? = MaterialIcon.cm.menu 

    // Menu button. 
    let menuButton: IconButton = IconButton() 
    menuButton.pulseColor = MaterialColor.white 
    menuButton.tintColor = MaterialColor.white 
    menuButton.setImage(image, forState: .Normal) 
    menuButton.setImage(image, forState: .Highlighted) 


    // Add button 
    image = MaterialIcon.cm.add 
    addButton.pulseColor = MaterialColor.white 
    addButton.tintColor = MaterialColor.white 
    addButton.setImage(image, forState: .Normal) 
    addButton.setImage(image, forState: .Highlighted) 
    addButton.center = toolbar.center 

    let space = IconButton() 
    space.userInteractionEnabled = false 
    //spacd.pulseColor = UIColor 

    // Search button. 
    image = MaterialIcon.cm.search 
    let searchButton: IconButton = IconButton() 
    searchButton.pulseColor = MaterialColor.white 
    searchButton.tintColor = MaterialColor.white 
    searchButton.setImage(image, forState: .Normal) 
    searchButton.setImage(image, forState: .Highlighted) 

    /* 
    To lighten the status bar - add the 
    "View controller-based status bar appearance = NO" 
    to your info.plist file and set the following property. 
    */ 
    toolbar.backgroundColor = MaterialColor.blue.base 
    toolbar.leftControls = [menuButton] 
    toolbar.rightControls = [searchButton] 
    toolbar.addSubview(addButton) 
    toolbar.layout(addButton).center() 

    let gesture = UITapGestureRecognizer(target: self, action: #selector(toolBarTapGestureRecognizer)) 
    toolbar.addGestureRecognizer(gesture) 
} 

func toolBarTapGestureRecognizer(tapGestureRecognizer: UITapGestureRecognizer) { 
    if (CGRectContainsPoint(addButton.bounds, tapGestureRecognizer.locationInView(addButton))) { 
     addButton.pulse() 
      NSLog("!!!!!!") 
    } 
} 

} 

結果:

enter image description here

+0

我不要認爲你的答案是正確的,我以編程方式實施工具欄,我不能改變我的故事板。 –

+0

我編輯了我的答案 –

+0

我不認爲我可以將代碼應用於我的,因爲我使用的是谷歌材質設計框架。 –