有一個(gè)彈框劲绪,彈框上邊有一個(gè)關(guān)閉按鈕,點(diǎn)擊按鈕卡者,可以關(guān)閉彈框蒿囤。點(diǎn)擊彈框的周圍區(qū)域也可以關(guān)閉按鈕。 點(diǎn)擊上邊的隱藏彈框也可以關(guān)閉按鈕崇决。
在實(shí)現(xiàn)功能的基礎(chǔ)上材诽,以動(dòng)畫的形式展示跟隱藏。
思路:在之前的開發(fā)中恒傻,我的思路比較局限脸侥。想著用一個(gè)view來做中間的那一塊,那么問題來了盈厘,左上角的關(guān)閉按鈕睁枕,就加在view的左上角。效果猛一看是可以實(shí)現(xiàn),但是這個(gè)關(guān)閉按鈕的點(diǎn)擊事件外遇,卻不怎么好使拒逮,因?yàn)榘粹o有一部分超出了view的界限,于是臀规,點(diǎn)擊起來就不太好使滩援。
遇見問題,解決問題塔嬉。于是我就轉(zhuǎn)換了一種思路玩徊。當(dāng)然這思路還是在別人的指點(diǎn)下完成的。
思路如下:
1.首先確實(shí)需要一個(gè)彈框的view1 view1的大小是整個(gè)界面的大小谨究。設(shè)置這個(gè)view的背景為半透明恩袱,透明度可以是0.5 或者是任意0-1之間的數(shù)值,具體看你想要的效果胶哲。
2.然后需要一個(gè)放內(nèi)容的view2 這個(gè)view2里邊包含了 上邊的img 還有兩行文字畔塔,都是放在這個(gè)view2里邊的。
3.最后將關(guān)閉按鈕 加在view1的上邊鸯屿。這樣就大功告成了澈吨。 隨便點(diǎn)擊關(guān)閉按鈕,絲毫沒有任何印象寄摆。
核心代碼實(shí)現(xiàn):
//
//? ACErCodeView.m
//? demo1二維碼點(diǎn)擊動(dòng)態(tài)出現(xiàn)
//
//? Created by Alice_ss on 2018/1/3.
//? Copyright ? 2018年 AC. All rights reserved.
//
#import "ACErCodeView.h"
#define SCREENW [UIScreen mainScreen].bounds.size.width
#define SCREENH [UIScreen mainScreen].bounds.size.height
@implementation ACErCodeView{
? ? UIImageView *codeIMG;
? ? UILabel *nickNameLabel;
? ? UILabel *sexLabel;
? ? UIButton *closeBtn;
}
-(instancetype)initWithFrame:(CGRect)frame{
? ? if (self = [super initWithFrame:frame]) {
? ? ? ? [self createUI];
? ? }
? ? return? self;
}
- (void)createUI{
? ? //1.創(chuàng)建一個(gè)view背景設(shè)置呈透明的因?yàn)檫@樣的話才能將關(guān)閉按鈕懸浮在上邊谅辣。
? ? UIImageView *bgView = [[UIImageView alloc]initWithFrame:CGRectMake(0, 64, SCREENW,SCREENH)];
? ? UITapGestureRecognizer *tap? = [[UITapGestureRecognizer alloc]initWithTarget:self action:@selector(tapClose)];
? ? bgView.userInteractionEnabled = YES;
? ? [bgView addGestureRecognizer:tap];
? ? [self addSubview:bgView];
? ? //2.放內(nèi)容的大view
? ? UIView *contentView = [[UIView alloc]initWithFrame:CGRectMake(0, 0, SCREENW-120,SCREENH-200)];
? ? contentView.backgroundColor = [UIColor whiteColor];
? ? [self addSubview:contentView];
? ? //3.二維碼圖片
? ? codeIMG = [[UIImageView alloc]initWithFrame:CGRectMake((CGRectGetWidth(contentView.frame)-100)/2, CGRectGetMinY(contentView.frame), 100, 100)];
? ? codeIMG.backgroundColor = [UIColor redColor];
? ? [contentView addSubview:codeIMG];
? ? //4.昵稱
? ? nickNameLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(codeIMG.frame)+10, CGRectGetWidth(contentView.frame), 44)];
//? ? nickNameLabel.backgroundColor = [UIColor blueColor];
? ? nickNameLabel.text = @"我是你們喜歡的Alice";
? ? nickNameLabel.textAlignment = NSTextAlignmentCenter;
? ? [contentView addSubview:nickNameLabel];
? ? //5.sex
? ? sexLabel = [[UILabel alloc]initWithFrame:CGRectMake(0, CGRectGetMaxY(nickNameLabel.frame)+10, CGRectGetWidth(contentView.frame), 44)];
//? ? sexLabel.backgroundColor = [UIColor redColor];
? ? sexLabel.text= @"我的性別是一個(gè)漂亮的小美女哦";
? ? sexLabel.textAlignment? = NSTextAlignmentCenter;
? ? [contentView addSubview:sexLabel];
? ? //給contentview設(shè)置高度
? ? contentView.frame = CGRectMake(SCREENW/2-(SCREENW-120)/2, (SCREENH-(CGRectGetMaxY(sexLabel.frame)+10))/2, SCREENW-120, CGRectGetMaxY(sexLabel.frame)+10);
? ? //6.關(guān)閉按鈕
? ? closeBtn = [[UIButton alloc]initWithFrame:CGRectMake(CGRectGetMinX(contentView.frame)-10, CGRectGetMinY(contentView.frame)-10, 30, 30)
? ? ? ? ? ? ? ? ];
? ? [closeBtn setBackgroundImage:[UIImage imageNamed:@"icon_shouye_GuanBi.png"] forState:0];
? ? [closeBtn addTarget:self action:@selector(closeBtnClicked:) forControlEvents:UIControlEventTouchUpInside];
? ? [self addSubview:closeBtn];
}
//關(guān)閉頁面
- (void)closeBtnClicked:(UIButton*)sender{
? ? [UIView animateWithDuration:0.3 animations:^{
? ? ? ? self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.3, 0.3);
? ? } completion:^(BOOL finished) {
? ? ? ? [UIView animateWithDuration:0.2 animations:^{
? ? ? ? ? ? self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0, 0);
? ? ? ? }];
? ? ? ? self.hidden = YES;
? ? ? ? self.blockCloseClicked(self.hidden);
? ? }];
}
//點(diǎn)擊背景隱藏界面
- (void)tapClose{
? ? [UIView animateWithDuration:0.3 animations:^{
? ? ? ? self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.3, 0.3);
? ? } completion:^(BOOL finished) {
? ? ? ? [UIView animateWithDuration:0.2 animations:^{
? ? ? ? ? ? self.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0, 0);
? ? ? ? }];
? ? ? ? self.hidden = YES;
? ? ? ? self.blockCloseClicked(self.hidden);
? ? }];
}
@end
//
//? ViewController.m
//? demo1二維碼點(diǎn)擊動(dòng)態(tài)出現(xiàn)
//
//? Created by Alice_ss on 2018/1/3.
//? Copyright ? 2018年 AC. All rights reserved.
//
#import "ViewController.h"
#import "ACErCodeView.h"
#define SCREENW [UIScreen mainScreen].bounds.size.width
#define SCREENH [UIScreen mainScreen].bounds.size.height
@interface ViewController ()
@property (weak, nonatomic) IBOutlet UIBarButtonItem *navRBarItem;
@property(nonatomic,strong)ACErCodeView *erCodeIMG;
@end
@implementation ViewController
- (IBAction)naviRBarClicked:(UIBarButtonItem *)sender {
? ? NSLog(@"RIGHT BAR ITEM CLICKED");
? ? if(_erCodeIMG.hidden){
? ? ? ? _erCodeIMG.hidden = NO;
? ? ? ? sender.title = @"點(diǎn)擊隱藏";
? ? ? ? _erCodeIMG.transform = CGAffineTransformScale(CGAffineTransformIdentity, CGFLOAT_MIN, CGFLOAT_MIN);
? ? ? ? [UIView animateWithDuration:0.3 animations:^{
? ? ? ? ? ? self.erCodeIMG.transform = CGAffineTransformScale(CGAffineTransformIdentity, 1.0, 1.0);
? ? ? ? } completion:^(BOOL finished) {
? ? ? ? ? ? [UIView animateWithDuration:0.2 animations:^{
? ? ? ? ? ? ? ? _erCodeIMG.transform = CGAffineTransformIdentity;
? ? ? ? ? ? }];
? ? ? ? }];
? ? }else{
? ? ? ? sender.title = @"點(diǎn)擊顯示";
? ? ? ? [UIView animateWithDuration:0.3 animations:^{
? ? ? ? ? ? self.erCodeIMG.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0.3, 0.3);
? ? ? ? } completion:^(BOOL finished) {
? ? ? ? ? ? [UIView animateWithDuration:0.2 animations:^{
? ? ? ? ? ? ? ? _erCodeIMG.transform = CGAffineTransformScale(CGAffineTransformIdentity, 0, 0);
? ? ? ? ? ? }];
? ? ? ? ? ? _erCodeIMG.hidden = YES;
? ? ? ? }];
? ? }
}
- (void)viewDidLoad {
? ? [super viewDidLoad];
? ? self.view.backgroundColor = [UIColor yellowColor];
? ? // Do any additional setup after loading the view, typically from a nib.
? ? _erCodeIMG = [[ACErCodeView alloc]initWithFrame:CGRectMake(0, 0,SCREENW , SCREENH)];
? ? _erCodeIMG.backgroundColor = [UIColor colorWithRed:0 green:0 blue:0 alpha:0.5];
? ? _erCodeIMG.hidden = YES;
? ? __weak typeof(self) weakSelf = self;
? ? _erCodeIMG.blockCloseClicked = ^(BOOL ishidden) {
? ? ? ? if (ishidden) {
? ? ? ? ? ? self.navRBarItem.title = @"點(diǎn)擊顯示";
? ? ? ? }else{
? ? ? ? ? ? self.navRBarItem.title = @"點(diǎn)擊隱藏";
? ? ? ? }
? ? };
? ? [self.view addSubview:_erCodeIMG];
}
- (void)didReceiveMemoryWarning {
? ? [super didReceiveMemoryWarning];
? ? // Dispose of any resources that can be recreated.
}
@end
以上就是全部代碼。
希望新的一年婶恼,自己工作越來越踏實(shí)桑阶。同時(shí)也要學(xué)會(huì)拒絕,學(xué)會(huì)給與勾邦。
如有任何問題蚣录。請聯(lián)系我的郵箱 673658917@qq.com .