zoukankan      html  css  js  c++  java
  • 菱形开合的实现 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

  • 相关阅读:
    direct path write 等待事件导致数据库hang
    Sql Server数据库视图的创建、修改
    MVC视图中Html.DropDownList()辅助方法的使用
    Ubuntu16.04下安装.NET Core
    Ubuntu16.04下部署golang开发环境
    win7环境下安装运行gotour【转载整理】
    一.Windows I/O模型之选择(select)模型
    Windos下的6种IO模型简要介绍
    编码介绍(ANSI、GBK、GB2312、UTF-8、GB18030和 UNICODE)
    串口通信知识点详解
  • 原文地址:https://www.cnblogs.com/Ohero/p/3924317.html
Copyright © 2011-2022 走看看