zoukankan      html  css  js  c++  java
  • 1014-32-首页13-cell的结构分析---导航栏中间title位置的按钮的尺寸设置---setFrame----

    #import "HWTitleButton.h"

    #define HWMargin 5

    @implementation HWTitleButton

    - (id)initWithFrame:(CGRect)frame
    {
        self = [super initWithFrame:frame];
        if (self) {
            [self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal];
            self.titleLabel.font = [UIFont boldSystemFontOfSize:17];
            [self setImage:[UIImage imageNamed:@"navigationbar_arrow_down"] forState:UIControlStateNormal];
            [self setImage:[UIImage imageNamed:@"navigationbar_arrow_up"] forState:UIControlStateSelected];
        }
        return self;
    }

    // 目的:想在系统计算和设置完按钮的尺寸后,再修改一下尺寸
    /**
     *  重写setFrame:方法的目的:拦截设置按钮尺寸的过程
     *  如果想在系统设置完控件的尺寸后,再做修改,而且要保证修改成功,一般都是在setFrame:中设置
     */
    - (void)setFrame:(CGRect)frame   // 要彻底的修改 控件的尺寸,要再setFrame的基础上去改。
    {
        frame.size.width += HWMargin; // 在传来的 宽度 基础上再加 HWMargin; 要在 [super setFrame:frame];之前去加;

       // frame.origin.x += 10;
       // frame.origin.y += 20;


        [super setFrame:frame];
    }

    - (void)layoutSubviews
    {
        [super layoutSubviews];
        // 如果仅仅是调整按钮内部titleLabel和imageView的位置,那么在layoutSubviews中单独设置位置即可
        
        // 1.计算titleLabel的frame
        self.titleLabel.x = self.imageView.x;
        
        // 2.计算imageView的frame;  imageView 里面放得是那个箭头图片
        self.imageView.x = CGRectGetMaxX(self.titleLabel.frame) + HWMargin;
    }

    - (void)setTitle:(NSString *)title forState:(UIControlState)state
    {
        [super setTitle:title forState:state];

        // 只要修改了文字,就让按钮重新计算自己的尺寸
        [self sizeToFit];
    }

    - (void)setImage:(UIImage *)image forState:(UIControlState)state
    {
        [super setImage:image forState:state];
        
        // 只要修改了图片,就让按钮重新计算自己的尺寸
        [self sizeToFit];
    }
    @end

  • 相关阅读:
    Consul运行
    springcloud+Zookeeper测试
    解决:sql2005 安装完后 没有服务的问题
    asp.net dataTable添加列
    C#关闭word进程
    无法将类型为“Microsoft.Office.Interop.Word.ApplicationClass”的 COM 对象强制转换为接口类型“Microsoft.Office.Interop.Word._Application”
    C#网页采集
    C#计算时间差值
    C#播放声音
    C#打开得到路径
  • 原文地址:https://www.cnblogs.com/nxz-diy/p/5268474.html
Copyright © 2011-2022 走看看