UIControl控件的综合使用

本博客展示了如何使用SwiftUI构建动态交互式界面,并通过滑块、开关、数位加减器等组件实现对视图的实时控制,包括颜色、可见性与尺寸的变化。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

#import "MainViewController.h"


#define kScreenHeight CGRectGetHeight(self.view.bounds)//屏幕高度宏

#define kScreenWidth CGRectGetWidth(self.view.bounds)//屏幕宽度宏



@interface MainViewController ()


@end


@implementation MainViewController


- (void)viewDidLoad {

    [super viewDidLoad];

    // Do any additional setup after loading the view.

    //分段控件

    UISegmentedControl *segmentedControl=[[[UISegmentedControl alloc]initWithItems:@[@"左视图",@"右视图"]]autorelease];

    segmentedControl.frame=CGRectMake(20, 50, kScreenWidth-40, 30);

    //设置默认选中分段的下标

    segmentedControl.selectedSegmentIndex=0;

    [segmentedControl addTarget:self action:@selector(handleSegmentAction:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:segmentedControl];

    segmentedControl.tag=100;

    

    

    //视图的宽度和间距

    CGFloat viewWidth=120;

    CGFloat viewHeight=200;

    CGFloat offsetX=(kScreenWidth-viewWidth*2)/3;

    for (int i=0; i<2; i++) {

        UIView *aView=[[[UIView alloc]initWithFrame:CGRectMake(offsetX + (viewWidth +offsetX)*i, 100, viewWidth, viewHeight)]autorelease];

        aView.backgroundColor=i?[UIColor greenColor]:[UIColor redColor];//条件运算符

        [self.view addSubview:aView];

        //添加tag

        aView.tag=200+i;

    }

    //滑块

    NSArray *colors=@[[UIColor redColor],[UIColor greenColor],[UIColor blueColor]];

    CGFloat offsetY=20;//纵向偏移量

    for (int i=0; i<colors.count; i++) {

        UISlider *aSlider=[[[UISlider alloc]initWithFrame:CGRectMake(20, 400+(40+offsetY)*i, kScreenWidth-40, 40)]autorelease];

        //设置最大最小值,和当前值

        aSlider.minimumValue=0;

        aSlider.maximumValue=1;

        aSlider.value=0;

        //设置tag

        aSlider.tag=300+i;

        //添加颜色

        aSlider.minimumTrackTintColor=colors[i];

        aSlider.thumbTintColor=colors[i];//拇指按钮颜色

        [aSlider addTarget:self action:@selector(handleSliderAction:) forControlEvents:UIControlEventValueChanged];

        [self.view addSubview:aSlider];

    }

    

    

    //开关

    UISwitch *aSwitch=[[[UISwitch alloc]initWithFrame:CGRectMake(30, kScreenHeight-80, 0, 0)]autorelease];

    aSwitch.on=YES;//设置开关当前状态

    aSwitch.tintColor=[UIColor whiteColor];

    aSwitch.thumbTintColor=[UIColor greenColor];

    [aSwitch addTarget:self action:@selector(handleSwitchAction:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:aSwitch];

    aSwitch.tag=400;

    

    //数值加减器

    UIStepper *aStepper=[[[UIStepper alloc]initWithFrame:CGRectMake(kScreenWidth-120, kScreenHeight-80, 0, 0)]autorelease];

    aStepper.minimumValue=50;//最小值

    aStepper.maximumValue=280;//最大值

    aStepper.stepValue=5;//每次递增值

    aStepper.value=200;//当前值

    aStepper.tintColor=[UIColor magentaColor];

    [aStepper addTarget:self action:@selector(handleStepperAction:) forControlEvents:UIControlEventValueChanged];

    [self.view addSubview:aStepper];

    aStepper.tag=401;

    

    [self handleSegmentAction:segmentedControl];

}


-(void)handleSegmentAction:(UISegmentedControl *)sender{

    UISlider *redSlider=(UISlider *)[self.view viewWithTag:300];

    UISlider *greenSlider=(UISlider *)[self.view viewWithTag:301];

    UISlider *blueSlider=(UISlider *)[self.view viewWithTag:302];

    UISwitch *aSwitch=(UISwitch *)[self.view viewWithTag:400];

    UIStepper *aStepper=(UIStepper *)[self.view viewWithTag:401];

    UIView *currentView=[self.view viewWithTag:200+sender.selectedSegmentIndex];

    [aSwitch setOn:currentView.hidden animated:YES];

    aStepper.value=CGRectGetHeight(currentView.frame);

    CGFloat red,green,blue;

    [currentView.backgroundColor getRed:&red green:&green blue:&blue alpha:nil];

    redSlider.value=red;

    greenSlider.value=green;

    blueSlider.value=blue;

}


-(void)handleSliderAction:(UISlider *)sender{

    //得到三个滑块的当前值,作为颜色三原色的色值

    CGFloat red=[(UISlider *)[self.view viewWithTag:300] value];

    CGFloat green=[(UISlider *)[self.view viewWithTag:301] value];

    CGFloat blue=[(UISlider *)[self.view viewWithTag:302] value];

    //通过segmentControl当前选中的下标来获取被选中的视图

    UISegmentedControl *segmentControl=(UISegmentedControl *)[self.view viewWithTag:100];

    UIView *currentView=[self.view viewWithTag:200+segmentControl.selectedSegmentIndex];

    //设定视图的背景颜色

    currentView.backgroundColor=[UIColor colorWithRed:red green:green blue:blue alpha:1];

}


-(void)handleSwitchAction:(UISwitch *)sender{

    UISegmentedControl *segentConteol=(UISegmentedControl *)[self.view viewWithTag:100];

    UIView *currentView=[self.view viewWithTag:200 +segentConteol.selectedSegmentIndex];

    currentView.hidden=sender.on;

}


-(void)handleStepperAction:(UIStepper *)sender{

    UISegmentedControl *segentConteol=(UISegmentedControl *)[self.view viewWithTag:100];

    UIView *currentView=[self.view viewWithTag:200 +segentConteol.selectedSegmentIndex];

    CGRect frame=currentView.frame;

    frame.size.height=sender.value;

    currentView.frame=frame;

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值