zoukankan      html  css  js  c++  java
  • iOS错误整理--自定义按钮,给按钮内部赋值出现的错误

    一、练习中为了实现自定义按钮,按钮中的imageView和titleLabel默认是左右排列的。在练习中自定义为上下排列。

    *在以下方法中重新布局按钮中的子控件

     1 - (void)layoutSubviews
     2 {
     3     [super layoutSubviews];
     4     CGFloat buttonH = self.frame.size.height;
     5     CGFloat buttonW = self.frame.size.width;
     6     CGFloat labelH = buttonH - buttonW;
     7     // 布局子控件
     8     self.imageView.frame = CGRectMake(0, 0, buttonW, buttonW);
     9     self.titleLabel.frame = CGRectMake(0, buttonW, buttonW, labelH);
    10 }

    *子控件布局完成之后,在以下方法设置子控件的颜色,文字,大小之类

    注意:按钮的很多属性都是有各种状态的,正常状态,高亮状态等。设置这种属性要加上状态!

    设置带有状态的属性,正确代码如下:

     1 - (instancetype)initWithFrame:(CGRect)frame
     2 {
     3     // 调用父类的initWithFrame方法
     4     if (self = [super initWithFrame:frame]) {
     5         self.titleLabel.textAlignment = NSTextAlignmentCenter;
     6         // 设置titleLabel中的字体颜色
     7         [self setTitleColor:[UIColor redColor] forState:UIControlStateNormal];
     8         // 设置按钮背景图片
     9         [self setBackgroundImage:[UIImage imageNamed:@"add"] forState:UIControlStateNormal];
    10     } ;
    11     return self;
    12 }

    错误写法:带有状态的属性不能直接赋值,没有效果

            self.titleLabel.text = @"删除";
            self.imageView.image = [UIImage imageNamed:@"add"];
  • 相关阅读:
    小米范工具系列之二:小米范 web目录扫描器
    小米范工具系列之一:小米范 web查找器
    Layer子域名挖掘机
    unity第一人称
    浏览器的兼容大坑
    java掉系統进程
    java写的服务器,处理多个请求
    java网络练习一
    javaWeb开发原理
    unity传统GUI学习一.
  • 原文地址:https://www.cnblogs.com/gchlcc/p/5305020.html
Copyright © 2011-2022 走看看