swift - 分段控制仅在第一次按下时起作用

标签 swift xcode background controls

我想提供更改应用程序背景的选项。 当我只想更改背景颜色时,一切正常。但我必须使用背景图像。 我正在使用下面的代码

导入UIKit

容器 Controller 类:UIViewController {

var isRaindrops = false
var Background:String = "UIImage(named: \"Background\")"

override func viewDidLoad() {
    super.viewDidLoad()
    BackgroundSwitch()
    self.view.backgroundColor = .white
}

func BackgroundSwitch() {
    let items = ["Gradient", "Raindrops"]
    let segmentedControl = UISegmentedControl(items: items)
    segmentedControl.translatesAutoresizingMaskIntoConstraints = false
    segmentedControl.frame = CGRect(x: 20, y: self.view.frame.height * 0.2 + 50, width: self.view.frame.width - 40, height: 40)
    segmentedControl.selectedSegmentIndex = 0
    segmentedControl.tintColor = UIColor.black
    segmentedControl.addTarget(self, action: #selector(segmentedControlInAction(sender:)), for: UIControl.Event.valueChanged)
    self.view.addSubview(segmentedControl)
}

@objc func segmentedControlInAction(sender:UISegmentedControl) {

    let index = sender.selectedSegmentIndex

    switch index {
    case 0:
        print("Gradient")
        Background = "Background"
        print(Background)
        //            self.view.backgroundColor = .red
        BackgroundSetup()
    case 1:
        (print("Raindrops"))
        Background = "Raindrops"
        print(Background)
        //            self.view.backgroundColor = .blue
        BackgroundSetup()
    default:
        print("default")
        break
    }
}

func BackgroundSetup() {
    let backgroundImage = UIImageView(frame: UIScreen.main.bounds)
    backgroundImage.image = UIImage(named: Background)
    self.view.insertSubview(backgroundImage, at: 0)
    //        self.view.backgroundColor = Background
}

}

根据我目前的代码,只有当我第一次点击“Raindrops”字段时,背景才会发生变化。

最佳答案

我有一个分段的表格 View ,我使用 case switch 和 if ,如下所示。

    if  sender.selectedSegmentIndex == 0
    {
       print("Gradient")
    Background = "Background"
    print(Background)
    BackgroundSetup()
    }
    if  sender.selectedSegmentIndex == 1
    {
       (print("Raindrops"))
    Background = "Raindrops"
    print(Background)
    BackgroundSetup()
    }

关于swift - 分段控制仅在第一次按下时起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56514164/

相关文章:

ios - 委托(delegate)快速丢失 View Controller 对象

ios - NSXMLParser 访问字符串值错误

ios - 无法使用 SwiftUI 加载相机

android - 无法将颜色转换为可绘制对象

ios - Swift "Bridging-Header.h"文件不允许我在 .swift 文件中实例化 objective-c 类

ios - 每次调用都很简单的方法分配内存而不释放内存

ios - 警告 : architectures 'armv7 armv7s' didn't contain all required architectures 'arm64'

xcode - MacOS 在后台不响应 MPRemoteCommandCenter 命令

ios - 在 swift ios 中更新文本字段 ui

css - 重复背景的垂直线