iOS开发学习(二):控件学习


        前面了解了iOS的基本知识,并且写了一个简单的app,从现在的文章开始就正式进入iOS的学习中了。先学习以下iOS的基本控件。


        Slider控件:


        1.新建一个项目,选择single view application。

        2.添加一个slider和一个label
        
        slider类似一个滑块,上下或者左右滑动来改变数值。

        设置属性:
        选中slider的情况下,查看attributes inspector,在attributes inspector中的Slider栏下有几个数值需要注意
        
        其中0表示Slider的滑块滑到最左边时的数值(最小值),100表示Slider的滑块滑到最右边时的数值(最大值),50表示Slider的初始值,设置完成后,slider控件会根据设置的值自动调整位置。

        添加完slider和label的图如下:

        

        我们下面要做的就是拖动slider,能够使得label中显示slider的数值。

        因为要修改label的数值,所以我们需要为它添加outlet,slider活动然后修改label的值,所以我们需要为slider添加action,添加action和outlet的方法上文已经说过了。

        选中label,按住control键拖动到UIExample1ViewController.h中去。在弹出的框框里,为Outlet取一个名字叫做labelOutlet,单击return,完成添加。
        选中slider,按住control键拖动到UIExample1ViewController.h中去。在弹出的框框里,为action取一个名字叫做sliderAction,单击return,完成添加。
        


        添加code:

        在sliderAction事件中添加以下代码:
- (IBAction)sliderAction:(id)sender {
    UISlider *slider = (UISlider *)sender;
    int progressInt = ( int )roundf(slider.value);
    lableOutlet.text = [NSString stringWithFormat:@"%d",progressInt];
}

              OK,编译运行,可以看到随着slider的拖动,label就会显示不同的数值。


        2.Segmented Control And Switch
        我们在上面的情况下接着添加控件。

        

       1. Segmented Control可以有多个值进行选择,每个选择就可以代表一个页面。例如下面这样:
        

        1)添加segmented control,然后调整它的位置以及宽度。如下图:

        

        2)添加二个imageview 到界面上,我们要点击segmented control的first的时候,显示下面的一个label和一个slider,点击second和third的时候都显示两个画面。这3页面只能有一个显示,其余2个都隐藏。

        添加2个imageview 到界面上,设置属性为hidden。并且导入图片,添加好图片。
        并且给这两个imageview创建outlet
        3) 下面我们就是实现segmentd control的action事件,根据选择的segment,来选择show出来不同的界面。
        segmented control的事件我们上面已经添加完成了,直接+code:
- (IBAction)controlAction:(id)sender {
    if ([sender selectedSegmentIndex ] == 0 ) {
        firstImageView.hidden = YES;
        secondImageview.hidden = YES;
    }
    else if ( [sender selectedSegmentIndex ] == 1){
        firstImageView.hidden = NO;
        secondImageview.hidden = YES;
    }
    else{
        firstImageView.hidden = YES;
        secondImageview.hidden = NO;
    }
}

        第一个if语句标示当选择第一个segment的时候,隐藏两个imageview,后面都类似功能。
        执行程序:
        
        
        
        Ok,基本的功能算是已经实现了。

        

        2.添加3个switch到界面上,如下:

        


       3.添加outlet和action

       为3个switch添加outlet ,3个switch共用一个action,segmented control使用一个action。如何使得3个switch共用一个action看上文。添加完成之后的.h文件如下:

        

#import <UIKit/UIKit.h>

@interface UIExample1ViewController : UIViewController
- (IBAction)sliderAction:(id)sender;
@property (weak, nonatomic) IBOutlet UILabel *lableOutlet;
@property (weak, nonatomic) IBOutlet UISwitch *firstSwitch;
@property (weak, nonatomic) IBOutlet UISwitch *secondSwitch;
@property (weak, nonatomic) IBOutlet UISwitch *thirdSwitch;
- (IBAction)switchAction:(id)sender;
- (IBAction)controlAction:(id)sender;

@end
        .m文件如下:我这里没有自动添加属性,所以我都是自己写的。不知道是什么原因导致的没有自动添加。

#import "UIExample1ViewController.h"

@interface UIExample1ViewController ()

@end

@implementation UIExample1ViewController

@synthesize lableOutlet;
@synthesize firstSwitch;
@synthesize secondSwitch;
@synthesize thirdSwitch;
.....

- (IBAction)switchAction:(id)sender {

}

- (IBAction)controlAction:(id)sender {

}

@end


        实现switchAction

- (IBAction)switchAction:(id)sender {
    UISwitch * whichSwitch = (UISwitch * ) sender;
    BOOL seeting = whichSwitch.isOn;
    [ firstSwitch setOn:seeting animated:YES];
    [ secondSwitch setOn:seeting animated:YES];
    [ thirdSwitch setOn:seeting animated:YES];
}

        因为3个switch都关联到了这个action,如果任何一个switch改变的话,都会出发这个aciton。在该方法中,首先将sender强制转换成UISwitch类型,这样就可以使用UISwitch定义的属性了,isOn用来判断Switch的状态是打开还是关闭(Switch仅有的2种状态),最好根据触发事件的Switch状态,将另一个switch也设置成相同的状态,程序中为了方便,并没有判断到底是哪个switch触发了该Action,只是简单的将2个switch设成相同的状态而已。setOn方法是根据后面的BOOL型参数的值来设置Switch的状态是打开还是关闭(ON,OFF)。

        animated是指当Switch从一种状态切换到另一种状态后,其滑块是否有活动效果,如果是YES,则滑块滑动的慢点,给人的感觉滑块是慢慢移动过去的,如果设成NO,滑块会很快地改变位置,滑动的速度很快。

        

        运行程序可以看到,3个switch状态都是一样的,如果有一个switch改变了,其余2个也都跟着改变。


       打完手工。

                

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值