·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> app软件开发 >> IOS开发 >> 014改变背景颜色(扩展知识:两个圆角的视图)

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

作者:佚名      IOS开发编辑:admin      更新时间:2022-07-23

效果如下:

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