• 菱形开合的实现 IOS


    实现的原理: 利用了自动布局和形变

    核心代码块:

    @implementation JHMainView

    {

        UILabel *label1,*label2,*label3,*label4;

        UIButton *btn;

    }

    - (id)initWithFrame:(CGRect)frame

    {

        self = [super initWithFrame:frame];

        if (self) {

            btn = [[UIButton alloc]initWithFrame:CGRectMake(100, 120, 120, 120)];

            btn.transform = CGAffineTransformRotate(btn.transform, M_PI_4);

            [btn addTarget:self action:@selector(btnClick:)forControlEvents:UIControlEventTouchUpInside];

            btn.autoresizesSubviews = YES;

            //btn.backgroundColor = [UIColor cyanColor];

            

            

            label1 = [[UILabel alloc]initWithFrame:CGRectMake(0, 0, 60, 60)];

            

            label1.backgroundColor = [UIColor orangeColor];

            

            label2 = [[UILabel alloc]initWithFrame:CGRectMake(btn.bounds.size.width/2, 0, 60, 60)];

            label2.autoresizingMask =  UIViewAutoresizingFlexibleLeftMargin;

            label2.backgroundColor = [UIColor blackColor];

            

            label3 = [[UILabel alloc]initWithFrame:CGRectMake(0, btn.bounds.size.height/2, 60, 60)];

            label3.backgroundColor = [UIColor blueColor];

            label3.autoresizingMask = UIViewAutoresizingFlexibleTopMargin;

            

            label4 = [[UILabel alloc]initWithFrame:CGRectMake(btn.bounds.size.width/2, btn.bounds.size.height/2, 60, 60)];

            label4.autoresizingMask = UIViewAutoresizingFlexibleTopMargin | UIViewAutoresizingFlexibleLeftMargin;

            label4.backgroundColor = [UIColor purpleColor];

            

            [btn addSubview:label1];

            [btn addSubview:label2];

            [btn addSubview:label3];

            [btn addSubview:label4];

            [self addSubview:btn];

            

            

            

        }

        return self;

    }

    - (void)btnClick:(UIButton *)sender

    {

        static int i=1 ;

        btn.center = btn.center;

        

        if(i%2)

        {

            btn.bounds = CGRectMake(0, 0, 180, 180);

        }

        else

        {

            btn.bounds = CGRectMake(0, 0, 120, 120);

        }

        

        i++;

    }

    @end

  • 相关阅读:
    day03 bs4解析库
    day02—selenium库
    day01爬虫三部曲
    IIC SPI UART通信方式的区别
    五大类程序设计模式
    套接字编程基础
    主机字节序和网络字节序转换
    位运算
    ARM体系结构的特点
    static关键字的作用
  • 原文地址:https://www.cnblogs.com/Ohero/p/3924317.html
Copyright © 2020-2023  润新知