【Swift】UISegmentedControl 实现分段控件

UISegmentedControl 详解,点击此处

具体实现:

  • 工程目录

工程目录

  • 具体代码

//  AppDelegate.swift

import UIKit

@UIApplicationMain
class AppDelegate: UIResponder, UIApplicationDelegate {

    var window: UIWindow?

    func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplication.LaunchOptionsKey: Any]?) -> Bool {
        // Override point for customization after application launch.
        
        let homePage = HomePage()
        
        self.window = UIWindow(frame: UIScreen.main.bounds)
        self.window?.rootViewController = homePage
        self.window?.backgroundColor = UIColor.white
        self.window?.makeKeyAndVisible()
        
        return true
    }

}

//  HomePage.swift

import UIKit

@objcMembers
class HomePage: UIViewController, UIScrollViewDelegate {
    
    let item1 = ViewController1()
    let item2 = ViewController2()
    let item3 = ViewController3()
    let item4 = ViewController4()
    
    var segmentView : UIScrollView!
    
    override func viewDidLoad() {
        super.viewDidLoad()
        
        let screen = UIScreen.main.bounds
        
        // 定义分段控件
        let segmentItems = ["item1","item2","item3","item4"]
        let segmented = UISegmentedControl(items: segmentItems)
        segmented.selectedSegmentIndex = 0
        segmented.frame = CGRect(x: 0, y: 76, width: screen.size.width, height: 44)
        segmented.addTarget(self, action: #selector(HomePage.segmentChange(_:)), for: .valueChanged)
        self.view.addSubview(segmented)
        
        // 定义一个视图用于存放具体显示的内容
        self.segmentView = UIScrollView(frame: CGRect(x: 0.0, y: 100.0, width: screen.size.width, height: 500.0))
        self.segmentView.delegate = self
        self.view.addSubview(self.segmentView)
        
        
        self.item1.view.frame = CGRect(x: 0.0, y: 200.0, width: screen.size.width, height: 50.0)
        self.item2.view.frame = CGRect(x: 0.0, y: 200.0, width: screen.size.width, height: 50.0)
        self.item3.view.frame = CGRect(x: 0.0, y: 200.0, width: screen.size.width, height: 50.0)
        self.item4.view.frame = CGRect(x: 0.0, y: 200.0, width: screen.size.width, height: 50.0)
        
        
        // 初始化内容
        self.segmentView.addSubview(self.item1.view)
    }

    // segemnet选择改变事件
        func segmentChange(_ sender: AnyObject?)
        {
            let segment:UISegmentedControl = sender as! UISegmentedControl
            
            // 清空 删除segmentView的所有子视图
            for view in self.segmentView.subviews{
                view.removeFromSuperview()
            }

            switch segment.selectedSegmentIndex {

            case 0 :
                print("0 ")
                self.segmentView.addSubview(self.item1.view)
            case 1 :
                print("1 ")
                self.segmentView.addSubview(self.item2.view)
            case 2 :
                print("2 ")
                self.segmentView.addSubview(self.item3.view)
            case 3 :
                print("3 ")
                self.segmentView.addSubview(self.item4.view)
            default:
                print("default ")
            }

        }
    
}


//  ViewController1.swift

import UIKit

class ViewController1: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
        
        let label = UILabel(frame: CGRect(x: 0.0, y: 0.0, width: 100.0, height: 30.0))
        label.text = "content1"
        self.view.addSubview(label)
    }

}

// ViewController2.swift ViewController3.swift ViewController4.swift 与 ViewController1.swift基本相同在这里不再具体展示


分享一个觉得还不错的自定义分段控件,点击此处

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值