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

  • 相关阅读:
    JS中的一些函数式编程术语
    学习RxJS:Cycle.js
    学习RxJS: 导入
    爬虫的终极形态:nightmare
    RxJS/Cycle.js 与 React/Vue 相比更适用于什么样的应用场景?
    [转]Shared——RN如何实现一个ExpandableList(可展开列表)组件
    Algorithm——ZigZag Conversion
    Review——RN视图缩放框架react-native-view-transformer解析
    Between Worlds 3 太阳与地球
    Tips——RN构造函数内绑定导致页面交互卡顿
  • 原文地址:https://www.cnblogs.com/nxz-diy/p/5268474.html
Copyright © 2011-2022 走看看