• UIButton的类型



    前言

    这周在写一个小Demo的时候,发现自己的UIButton的图片怎么也加不上去。即使那种只有单一仙桃的图片加上去了,也总是有种很奇怪的感觉。 纠正后发现,是UIButton的类型的原因 以前没有注意到这块,记录一下这个问题


    提示:以下是本篇文章正文内容,下面案例可供参考

    不对劲的一个出现

    //  ViewController.m
    //  UIButton
    //
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        UIButton* btn = [UIButton buttonWithType:UIButtonTypeSystem];
        [btn setImage:[UIImage imageNamed:@"shezhi"] forState:UIControlStateNormal];
        btn.frame = CGRectMake(100, 100, 100, 100);
        [self.view addSubview:btn];
        // Do any additional setup after loading the view.
    }
    @end
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23

    背景的图片是我添加的名为shezhi的一张图片,但是我们的虚拟机上显示的图片却是蓝色的一张图
    在这里插入图片描述
    那如果换一张图片呢?

    //  ViewController.m
    //  UIButton
    //
    //  Created by 王璐 on 2022/10/21.
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        UIButton* btn = [UIButton buttonWithType:UIButtonTypeSystem];
        [btn setImage:[UIImage imageNamed:@"shezhi"] forState:UIControlStateNormal];
        btn.frame = CGRectMake(100, 100, 100, 100);
        [self.view addSubview:btn];
        
        
        
        
        UIButton* btn2 = [UIButton buttonWithType:UIButtonTypeSystem];
        [btn2 setImage:[UIImage imageNamed:@"touxiang.jpeg"] forState:UIControlStateNormal];
        btn2.frame = CGRectMake(300, 100, 100, 100);
        [self.view addSubview:btn2];
        // Do any additional setup after loading the view.
    }
    
    
    @end
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34

    这次更离谱了,甚至连轮廓都没有了。
    在这里插入图片描述

    UIButtonTypeSystem

    系统样式

    解决方法

    //  ViewController.m
    //  UIButton
    //
    //
    
    #import "ViewController.h"
    
    @interface ViewController ()
    
    @end
    
    @implementation ViewController
    
    - (void)viewDidLoad {
        [super viewDidLoad];
        UIButton* btn = [UIButton buttonWithType:UIButtonTypeCustom];
        [btn setImage:[UIImage imageNamed:@"shezhi"] forState:UIControlStateNormal];
        btn.frame = CGRectMake(100, 100, 100, 100);
        [self.view addSubview:btn];
        
        
        
        
        UIButton* btn2 = [UIButton buttonWithType:UIButtonTypeCustom];
        [btn2 setImage:[UIImage imageNamed:@"touxiang.jpeg"] forState:UIControlStateNormal];
        btn2.frame = CGRectMake(300, 100, 100, 100);
        [self.view addSubview:btn2];
        // Do any additional setup after loading the view.
    }
    
    
    @end
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32

    这是创建结果
    在这里插入图片描述

    UIButtonTypeCustom

    自定义类型,无样式

    其他类型的button

    UIButtonTypeRoundedRect

    圆角类型
    当UIButton是UIButtonTypeSystem类型时,改变UIButton的frame,系统会有一个动画改变效果,不想要这个效果,将类型改为UIButtonTypeCustom

    在这里插入图片描述

    UIButtonTypeClose

    在这里插入图片描述

    UIButtonTypeInfoDark

    图片为i字母(info)暗的信息类型

    在这里插入图片描述

    UIButtonTypeContactAdd

    加号(+)按钮类型

    在这里插入图片描述

    UIButtonTypeInfoLight

    图片为i字母(info)亮的信息类型

    在这里插入图片描述

    UIButtonTypeDetailDisclosure

    细节详情样式

    在这里插入图片描述


    总结

    因为button类型的不清楚,在这块卡了好久好久。后来才发现是因为这个。
    以后在学习的过程中应该更注意一些细节。

  • 相关阅读:
    c#使用UDP进行聊天通信
    【git】github 如何同步别人的仓库
    7-87 时间换算
    机械设备行业调研:纳米发电机市场规模分析及发展前景预测
    html+javascript 编写的自动根据当前时间问好 早上 中午下午 晚上 还有下班倒计时等等
    Maven高级---分模块设计,继承(继承关系/版本锁定/自定义属性)
    以太网采用的拓扑结构基本是什么型
    多御安全浏览器chromium95内核更新:上网速度更快
    vue3 el-table表格数据过多加载卡死优化问题
    中企绕道突破封锁,防不胜防 | 百能云芯
  • 原文地址:https://blog.csdn.net/weixin_61196797/article/details/127451942