UIButtonを、
非選択時:背景…白 文字色…赤or青 画像:色付き画像
選択時:背景…赤or青 文字色…白 画像:白色画像
に変更したいのですが、buttonをisSelected = true にしても文字色・画像が変更されません。

class GraphViewController: UIViewController {

@IBOutlet weak var monthlyButton: UIButton!
@IBOutlet weak var itemizedButton: UIButton!
var buttonArray: [UIButton]!

override func viewDidLoad() {
    super.viewDidLoad()

    monthlyButton.isSelected = true        
    buttonArray = [monthlyButton,itemizedButton]

    layoutSetting()
}

func layoutSetting(){
    for button in buttonArray{
        button.cornerLayout(.circle)
        button.shadowSetting()
        button.setTitleColor(UIColor.white, for: .selected)
    }
    monthlyButton.setImage(UIImage(named: "PieChart(White)"), for: .selected)
    monthlyButton.borderMake(type: .normal, color: UIColor(hexString: "EA6149")!)
    itemizedButton.setImage(UIImage(named: "LineChart(White)"), for: .selected)
    itemizedButton.borderMake(type: .normal, color: UIColor(hexString: "0096FF")!)
}

func selectButtonChange(sender:UIButton){
    for button in buttonArray{
        if sender == button{
            button.isEnabled = false
            button.alpha = 1.0
            button.buttonTap()
            if button == monthlyButton{
                button.backgroundColor = UIColor(hexString: "EA6149")!
            }else{
                button.backgroundColor = UIColor(hexString: "0096FF")!
            }
        }else{
            button.isSelected = false
            button.isEnabled = true
            button.alpha = 0.3
            button.buttonRelease()
            button.backgroundColor = UIColor.white
        }
    }
}

@IBAction func showComponent(sender: UIButton) {
    sender.isSelected = true
    selectButtonChange(sender: sender)
    print(sender.isSelected)
    print(sender.titleColor(for: .normal)!)
    print(sender.titleColor(for: .selected)!)
}

printの中身は上からそれぞれ
true
UIExtendedSRGBColorSpace 0 0.589801 1 1
UIExtendedGrayColorSpace 1 1
となっています。
改善方法を教えてください。よろしくお願いいたします。

<補足>

extension UIView{
func shadowSetting(){
    let screenHeight = UIScreen.main.bounds.height
    var shadowSize = screenHeight / 100
    if UIDevice.current.userInterfaceIdiom == .phone{
        shadowSize = screenHeight / 75
    }

    self.layer.shadowOpacity = 0.5
    self.layer.shadowOffset = CGSize(width: shadowSize, height: shadowSize)
}

enum cornerType{
    case collectionView
    case verySmall
    case small
    case normal
    case circle
}

func cornerLayout(_ type:cornerType){
    let rate = self.frame.height / self.frame.width
    var side: CGFloat!
    if rate == 1{
        if UIDevice.current.userInterfaceIdiom == .pad{
            side = self.frame.width
        }else{
            side = self.frame.height
        }
    }else if rate > 1{
        side = self.frame.width
    }else{
        side = self.frame.height
    }
    switch type {
    case .collectionView:
        self.layer.cornerRadius = side / 16.0
    case .verySmall:
        self.layer.cornerRadius = side / 8.0
    case .small:
        self.layer.cornerRadius = side / 6.0
    case .normal:
        self.layer.cornerRadius = side / 4.0
    case .circle:
        self.layer.cornerRadius = side / 2.0
    }
}

enum borderSize{
    case veryThin
    case thin
    case normal
    case thick
    case veryThick
}

func borderMake(type:borderSize , color:UIColor){
    switch type {
    case .veryThin:self.layer.borderWidth = self.frame.height / 60
    case .thin:self.layer.borderWidth = self.frame.height / 50
    case .normal:self.layer.borderWidth = self.frame.height / 40
    case .thick:self.layer.borderWidth = self.frame.height / 30
    case .veryThick:self.layer.borderWidth = self.frame.height / 20
    }
    self.layer.borderColor = color.cgColor
}
}
extension UIButton{    
@objc func buttonTap() {
    let shadowSize = UIScreen.main.bounds.height / 100
    if self.layer.shadowOffset.width >= shadowSize{
        self.frame.origin.x += shadowSize / 2
        self.frame.origin.y += shadowSize / 2
        self.layer.shadowOffset = CGSize(width:
            shadowSize / 4, height: shadowSize / 4)
    }
}

@objc func buttonRelease() {
    let shadowSize = self.layer.shadowOffset.height
    if shadowSize < UIScreen.main.bounds.height / 100{
        self.frame.origin.x -= shadowSize * 2
        self.frame.origin.y -= shadowSize * 2
        self.layer.shadowOffset = CGSize(width: shadowSize * 4, height: shadowSize * 4)
    }
}
}