首页 > 学院 > 开发设计 > 正文

014改变背景颜色(扩展知识:两个圆角的视图)

2019-11-14 18:50:56
字体:
来源:转载
供稿:网友

效果如下:

ViewController.h

 1 #import <UIKit/UIKit.h> 2  3 @interface ViewController : UIViewController { 4     @PRivate 5     UILabel *lblMessage; 6     CGFloat colorRed; 7     CGFloat colorGreen; 8     CGFloat colorBlue; 9 }10 11 @end

ViewController.m

  1 #import "ViewController.h"  2   3 @interface ViewController ()  4 - (void)redDidPush;  5 - (void)greenDidPush;  6 - (void)blueDidPush;  7 - (void)changeLabelColor:(CGFloat*)pColor;  8 @end  9  10 @implementation ViewController 11  12 #pragma mark - Start Implementation For Methods 13 - (void)viewDidLoad { 14     [super viewDidLoad]; 15     colorRed = 0.0; 16     colorGreen = 0.0; 17     colorBlue = 0.0; 18     CGPoint newPoint = self.view.center; 19      20     //追加Label标签 21     lblMessage = [[UILabel alloc] initWithFrame:CGRectMake(0, 0, 320, 200)]; 22     lblMessage.textAlignment = NSTextAlignmentCenter; 23     lblMessage.center = newPoint; 24     lblMessage.textColor = [UIColor whiteColor]; 25     lblMessage.text = @"染上新的颜色吧..."; 26     lblMessage.backgroundColor = [[UIColor alloc] initWithRed:colorRed green:colorGreen blue:colorBlue alpha:1.0]; 27     //设置Label标签的圆角 28     //默认是四个圆角 29 //    lblMessage.layer.cornerRadius = 20.0; 30 //    lblMessage.layer.masksToBounds = YES; 31      32     /* 33      typedef NS_OPTIONS(NSUInteger, UIRectCorner) { 34      UIRectCornerTopLeft     = 1 << 0, 35      UIRectCornerTopRight    = 1 << 1, 36      UIRectCornerBottomLeft  = 1 << 2, 37      UIRectCornerBottomRight = 1 << 3, 38      UIRectCornerAllCorners  = ~0UL 39      }; 40      */ 41     //这里使用Layer实现两个圆角;左上角和右上角 42     UIRectCorner rectCorner = UIRectCornerTopLeft | UIRectCornerTopRight; 43     UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:lblMessage.bounds 44                                                byRoundingCorners:rectCorner 45                                                      cornerRadii:CGSizeMake(20.0, 20.0)]; 46     CAShapeLayer *shapeLayer = [CAShapeLayer layer]; 47     shapeLayer.path = path.CGPath; 48     lblMessage.layer.mask = shapeLayer; 49     [self.view addSubview:lblMessage]; 50      51     //追加红色按钮 52     UIButton *btnRed = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 53     btnRed.frame = CGRectMake(0, 0, 50, 40); 54     newPoint.x -= (btnRed.frame.size.width + 10); 55     newPoint.y = self.view.frame.size.height - 70; 56     btnRed.center = newPoint; 57     btnRed.backgroundColor = [UIColor grayColor]; 58     [btnRed setTitle:@"" forState:UIControlStateNormal]; 59     [btnRed setTitleColor:[UIColor redColor] forState:UIControlStateNormal]; 60     [btnRed addTarget:self action:@selector(redDidPush) forControlEvents:UIControlEventTouchUpInside]; 61     [self.view addSubview:btnRed]; 62      63     //追加绿色按钮 64     UIButton *btnGreen = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 65     btnGreen.frame = btnRed.frame; 66     newPoint.x += (btnRed.frame.size.width + 5); 67     btnGreen.center = newPoint; 68     btnGreen.backgroundColor = [UIColor grayColor]; 69     [btnGreen setTitle:@"绿" forState:UIControlStateNormal]; 70     [btnGreen setTitleColor:[UIColor greenColor] forState:UIControlStateNormal]; 71     [btnGreen addTarget:self action:@selector(greenDidPush) forControlEvents:UIControlEventTouchUpInside]; 72     [self.view addSubview:btnGreen]; 73      74     //追加蓝色按钮 75     UIButton *btnBlue = [UIButton buttonWithType:UIButtonTypeRoundedRect]; 76     btnBlue.frame = btnRed.frame; 77     newPoint.x += (btnRed.frame.size.width + 5); 78     btnBlue.center = newPoint; 79     btnBlue.backgroundColor = [UIColor grayColor]; 80     [btnBlue setTitle:@"" forState:UIControlStateNormal]; 81     [btnBlue setTitleColor:[UIColor blueColor] forState:UIControlStateNormal]; 82     [btnBlue addTarget:self action:@selector(blueDidPush) forControlEvents:UIControlEventTouchUpInside]; 83     [self.view addSubview:btnBlue]; 84 } 85  86 - (void)didReceiveMemoryWarning { 87     [super didReceiveMemoryWarning]; 88     // Dispose of any resources that can be recreated. 89 } 90  91 #pragma mark - Private Methods 92 - (void)redDidPush { 93     [self changeLabelColor:&colorRed]; 94 } 95  96 - (void)greenDidPush { 97     [self changeLabelColor:&colorGreen]; 98 } 99 100 - (void)blueDidPush {101     [self changeLabelColor:&colorBlue];102 }103 104 - (void)changeLabelColor:(CGFloat*)pColor {105     if (pColor) {106         if (*pColor > 0.99) {107             *pColor = 0.0;108         } else {109             *pColor += 0.1;110         }111         lblMessage.backgroundColor = [[UIColor alloc] initWithRed:colorRed green:colorGreen blue:colorBlue alpha:1.0];112     }113 }114 115 @end 

 


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表