UI_Button(按钮)

这篇博客介绍了在iOS中如何使用UIButton,包括初始化不同类型的按钮,设置标题、大小和图片,添加点击事件以及处理不同触摸状态。示例代码展示了UIButton的Target-Action机制,并通过回调方法展示了按钮被点击后的交互效果。

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

- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {

    self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]];


    //iOS中按钮的学习  UIButton

    //初始化button对象  使用系统提供的样式。由于button有自己的初始化方法,所以使用自己的

    UIButton *myBtn = [UIButton buttonWithType:UIButtonTypeSystem];

    

    //为按钮设置标题   常态状态下的标题。也就是不点击按钮时候的标题

    [myBtn setTitle:@"点我" forState:UIControlStateNormal];

    

    //设置按钮大小

    [myBtn setFrame:CGRectMake(100, 100, 100, 50)];

    

    //显示按钮

    [self.window addSubview:myBtn];

    

    //选中状态

    [myBtn setTitle:@"选中" forState:UIControlStateSelected];

    

     //设置高亮标题

    [myBtn setTitle:@"高亮" forState:UIControlStateHighlighted];


    //button添加点击事件

    //target-action  目标动作机制

    //target :目标,方法的执行体。(就是按钮的action事件写在那个类里面)

    //action:按钮的回调方法,如果方法有参数,那么这个参数一定是按钮本身,方法没有参数也可以。

    //events: 那种触摸方式会触发按钮的回调方法

    //self :如果写在对象方法中,也就是OC中减号方法中,self就代表类对象,如果写在类方法中,也就是OC的加号方法,self就是代表本类

    [myBtn addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];

//按钮的触发方式:

    

    //  UIControlEventTouchUpInside

    //  单击(手指按下去,然后再松手的时候触发方法),这个点击方式也是最常用的点击方式

    

    //  UIControlEventTouchDown

    //   点下去之后就会触发方法,不等松手

    

    //  UIControlEventTouchDragInside

    //  放在上面滑动就会触发

    

    //  UIControlEventTouchDragOutside

    //   点着按钮滑动足够远  就会触发

    

 

    

    //custom类型的button

    //初始化button

    UIButton *button = [UIButton buttonWithType:UIButtonTypeCustom];

    

    //为按钮添加图片

    [button setImage:[UIImage imageNamed:@"han.jpg"] forState:UIControlStateNormal];

    

    //设置按钮frame

    button.frame = CGRectMake(100, 100, 100, 100);

    

    //设置按钮的回调方法

    [button addTarget:self action:@selector(custombtnAction:) forControlEvents:UIControlEventTouchUpInside];

    

    

    //将按钮添加到父视图上

    [self.window addSubview:button];

    

    //添加高亮模式

    

    [button setImage:[UIImage imageNamed:@"颜色.gif"] forState:UIControlStateHighlighted];

    

    

 

    //定义一个UIImageView 点击按钮的时候,显示按钮上的图片

    UIImageView *btnImageView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 0, 100, 100)];

    btnImageView.center = self.window.center;

    [self.window addSubview:btnImageView];

    btnImageView.tag = 1000;

    

    

    

    

    //练习

    UIButton *mybut =[UIButton buttonWithType:UIButtonTypeSystem];

    [mybut setFrame:CGRectMake(100, 100, 100, 100)];

    [mybut setTitle:@"biaoti" forState:UIControlStateNormal];

    [mybut addTarget:self action:@selector(btnAction:) forControlEvents:UIControlEventTouchUpInside];

    [self.window addSubview:mybut];

    

    

    

    

    

    

    

    

    

    

    

    

    

    self.window.backgroundColor = [UIColor whiteColor];

    [self.window makeKeyAndVisible];

// [self.window bringSubviewToFront:myBtn];//加。。。

  return YES;

}



//按钮的回调方法,此函数就是触发该方法的按钮

-(void)btnAction:(UIButton *)sender{

/*

    NSLog(@"我最帅");

//点击按钮,改变按钮标题

    [sender setTitle:@"还想点不?" forState:UIControlStateNormal];

//点击按钮,随机一个颜色赋给window颜色

    UIColor *randomColor = [UIColor colorWithRed:arc4random()%256/255.0 green:arc4random()%256/255.0 blue:arc4random()%256/255.0 alpha:1];

    [self.window setBackgroundColor:randomColor];

 */

    

    //选中状态需要配合 selected属性来使用   bool

    

   //  sender.selected = YES;    //单点选中

    

    

//     if (sender.selected == YES) {     //双点取消

//        sender.selected = NO;

//    }

//    else{

//        sender.selected = YES;

//    }

    sender.selected =!sender.selected;    //双点取消

}




-(void)custombtnAction:(UIButton *)sender{

    //得到按钮的图片并且显示在UIImageView  如果图片是常态状态下得就变换为高亮状态下,如果是高亮状态下得图片,就变换为常态状态下的图片


UIImageView *imageView = (UIImageView *)

    [self.window viewWithTag:1000];


    UIImage *btnImage = [sender imageForState:UIControlStateNormal];

    imageView.image = btnImage;

    

    sender.selected =!sender.selected;


    if (sender.selected == YES) {

        sender.selected =NO;

        UIImage *btnImage = [sender imageForState:UIControlStateNormal];

        imageView.image = btnImage;

        

        sender.selected =!sender.selected;

    }

    else{

        sender.selected =YES;

        UIImage *btnImage = [sender imageForState:UIControlStateHighlighted];

        imageView.image = btnImage;

        

        sender.selected =!sender.selected;

    

    }










}


#include "ui.h" #include "ui_helpers.h" ///////////////////// VARIABLES //////////////////// // SCREEN: ui_Screen1 void ui_Screen1_screen_init(void); lv_obj_t * ui_Screen1; void ui_event_ImgButton1(lv_event_t * e); lv_obj_t * ui_ImgButton1; lv_obj_t * ui_Calendar2; // SCREEN: ui_Screen2 void ui_Screen2_screen_init(void); lv_obj_t * ui_Screen2; void ui_event_Button3(lv_event_t * e); lv_obj_t * ui_Button3; lv_obj_t * ui_Label1; void ui_event_Button6(lv_event_t * e); lv_obj_t * ui_Button6; // SCREEN: ui_Screen3 void ui_Screen3_screen_init(void); lv_obj_t * ui_Screen3; void ui_event_Button2(lv_event_t * e); lv_obj_t * ui_Button2; lv_obj_t * ui_Label3; lv_obj_t * ui____initial_actions0; ///////////////////// TEST LVGL SETTINGS //////////////////// #if LV_COLOR_DEPTH != 32 #error "LV_COLOR_DEPTH should be 32bit to match SquareLine Studio's settings" #endif ///////////////////// ANIMATIONS //////////////////// ///////////////////// FUNCTIONS //////////////////// void ui_event_ImgButton1(lv_event_t * e) { lv_event_code_t event_code = lv_event_get_code(e); lv_obj_t * target = lv_event_get_target(e); if(event_code == LV_EVENT_CLICKED) { _ui_screen_change(&ui_Screen2, LV_SCR_LOAD_ANIM_FADE_ON, 5, 0, &ui_Screen2_screen_init); } } void ui_event_Button3(lv_event_t * e) { lv_event_code_t event_code = lv_event_get_code(e); lv_obj_t * target = lv_event_get_target(e); if(event_code == LV_EVENT_CLICKED) { _ui_screen_change(&ui_Screen1, LV_SCR_LOAD_ANIM_FADE_ON, 50, 0, &ui_Screen1_screen_init); } } void ui_event_Button6(lv_event_t * e) { lv_event_code_t event_code = lv_event_get_code(e); lv_obj_t * target = lv_event_get_target(e); if(event_code == LV_EVENT_CLICKED) { _ui_screen_change(&ui_Screen3, LV_SCR_LOAD_ANIM_MOVE_TOP, 50, 0, &ui_Screen3_screen_init); } } void ui_event_Button2(lv_event_t * e) { lv_event_code_t event_code = lv_event_get_code(e); lv_obj_t * target = lv_event_get_target(e); if(event_code == LV_EVENT_CLICKED) { _ui_screen_change(&ui_Screen2, LV_SCR_LOAD_ANIM_FADE_ON, 50, 0, &ui_Screen2_screen_init); } } ///////////////////// SCREENS //////////////////// void ui_init(void) { LV_EVENT_GET_COMP_CHILD = lv_event_register_id(); lv_disp_t * dispp = lv_display_get_default(); lv_theme_t * theme = lv_theme_default_init(dispp, lv_palette_main(LV_PALETTE_BLUE), lv_palette_main(LV_PALETTE_RED), false, LV_FONT_DEFAULT); lv_disp_set_theme(dispp, theme); ui_Screen1_screen_init(); ui_Screen2_screen_init(); ui_Screen3_screen_init(); ui____initial_actions0 = lv_obj_create(NULL); lv_disp_load_scr(ui_Screen1); } // This file was generated by SquareLine Studio // SquareLine Studio version: SquareLine Studio 1.4.2 // LVGL version: 9.1.0 // Project name: SquareLine_Project #include "../ui.h" void ui_Screen3_screen_init(void) { ui_Screen3 = lv_obj_create(NULL); lv_obj_remove_flag(ui_Screen3, LV_OBJ_FLAG_SCROLLABLE); /// Flags lv_obj_set_style_bg_image_src(ui_Screen3, &ui_img_bg_png, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_color(ui_Screen3, lv_color_hex(0x00FF00), LV_PART_SCROLLBAR | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui_Screen3, 255, LV_PART_SCROLLBAR | LV_STATE_DEFAULT); lv_obj_set_style_bg_image_src(ui_Screen3, &ui_img_game_png, LV_PART_SCROLLBAR | LV_STATE_DEFAULT); ui_Button2 = lv_button_create(ui_Screen3); lv_obj_set_width(ui_Button2, 100); lv_obj_set_height(ui_Button2, 50); lv_obj_set_x(ui_Button2, -456); lv_obj_set_y(ui_Button2, -277); lv_obj_set_align(ui_Button2, LV_ALIGN_CENTER); lv_obj_add_flag(ui_Button2, LV_OBJ_FLAG_SCROLL_ON_FOCUS); /// Flags lv_obj_remove_flag(ui_Button2, LV_OBJ_FLAG_SCROLLABLE); /// Flags lv_obj_set_style_bg_color(ui_Button2, lv_color_hex(0xFF8200), LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_set_style_bg_opa(ui_Button2, 100, LV_PART_MAIN | LV_STATE_DEFAULT); ui_Label3 = lv_label_create(ui_Screen3); lv_obj_set_width(ui_Label3, LV_SIZE_CONTENT); /// 1 lv_obj_set_height(ui_Label3, LV_SIZE_CONTENT); /// 1 lv_obj_set_x(ui_Label3, -458); lv_obj_set_y(ui_Label3, -277); lv_obj_set_align(ui_Label3, LV_ALIGN_CENTER); lv_label_set_text(ui_Label3, "退出"); lv_obj_set_style_text_font(ui_Label3, &ui_font_chinese38, LV_PART_MAIN | LV_STATE_DEFAULT); lv_obj_add_event_cb(ui_Button2, ui_event_Button2, LV_EVENT_ALL, NULL); } 根据代码实现在ui_Screen3_screen_init()调用游戏运行函数,实现游戏功能
最新发布
08-08
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值