【iOS】自定义AlertView(带两行输入框的)

最近自己写了一个自带两行输入框的AlertVIew,主要用到了delegate和自动布局。代码贴到这边。
效果如下:


image.png

头文件的:

//
//  CommonAlertTextView.h
//
//
//  Created by nick on 2018/1/30.
//  Copyright © 2018年 nick. All rights reserved.
//

#import <UIKit/UIKit.h>
@protocol CommonAlertTextViewDelegate <NSObject>

@optional
//消失视图
-(void)disclaimerViewTap;
//同意按钮点击
/**
 * @param LineOne 用户输入的第一行字符
 * @param LineTwo 用户输入的第二行字符
*/
-(void)agreeClickWithLineOne:(NSString *)LineOne andLineTwo:(NSString *)LineTwo;
//不同意按钮点击
-(void)dissAgreeClick;


@end

@interface CommonAlertTextView : UIView

@property (nonatomic, weak) id <CommonAlertTextViewDelegate> delegate;
  /**
* @param title 标题
* @param lineTitleOne 第一行标题
* @param lineTitleTwo 第二行输入框标题
* @param placeHoldOne 第一行placeHold
* @param placeHoldTwo 第二行placeHold
*
*/
   -(instancetype)initWithTitle:(NSString *)title lineTitleOne:(NSString *)lineTitleOne lineTitleTwo:(NSString *)lineTitleTwo placeHoldOne:(NSString *)placeHoldOne andPlaceHoldTwo:(NSString *)placeHoldTwo;

/**
 * @param title 标题
 * @param lineTitleOne 第一行标题
 * @param lineTitleTwo 第二行输入框标题
 * @param placeHoldOne 第一行placeHold
 * @param placeHoldTwo 第二行placeHold
 * @param LineOne 第一行文字
 * @param lineTwo 第二行文字
 */
 -(instancetype)initWithTitle:(NSString *)title lineTitleOne:(NSString *)lineTitleOne lineTitleTwo:(NSString *)lineTitleTwo placeHoldOne:(NSString *)placeHoldOne andPlaceHoldTwo:(NSString *)placeHoldTwo LineOne:(NSString *)lineOne andLineTwo:(NSString *)lineTwo;

//距离底部距离
@property (nonatomic)CGFloat offSet;

@end

.m文件的

 //
//  CommonAlertTextView.m

//  Created by  on 2018/1/30.
//  Copyright © 2018年 . All rights reserved.
//

#import "CommonAlertTextView.h"

@interface CommonAlertTextView()
//点击手势
@property(nonatomic,strong)UITapGestureRecognizer *viewTap;
@property(nonatomic,strong)UIView *view;
//背景View
@property(nonatomic,strong)UIView *backView;
//title
@property(nonatomic,strong)UILabel *titleLabel;
//textView
//@property(nonatomic,strong)UILabel *messageLabel;
//横线
@property(nonatomic,strong)UIView *hengXian;
//竖线
@property(nonatomic,strong)UIView *shuxian;
//同意按钮
@property(nonatomic,strong)UIButton *agreeButton;
//不同意按钮
@property(nonatomic,strong)UIButton *dissAgreeButton;

//view1
@property(nonatomic,strong)UIView *backViewOne;
//view2
@property(nonatomic,strong)UIView *backViewTwo;
//placeHoldLabel1
@property(nonatomic,strong)UILabel *placeHoldLabelOne;
//placeHoldLabel2
@property(nonatomic,strong)UILabel *placeHoldLabelTwo;
//textField1
@property(nonatomic,strong)UITextField *textFieldOne;
//textField2
@property(nonatomic,strong)UITextField *textFieldTwo;

@end

@implementation CommonAlertTextView

#pragma mark - life cycle

-(instancetype)initWithTitle:(NSString *)title lineTitleOne:(NSString *)lineTitleOne lineTitleTwo:(NSString *)lineTitleTwo placeHoldOne:(NSString *)placeHoldOne andPlaceHoldTwo:(NSString *)placeHoldTwo;
{
    self = [super init];
    if (self) {
        self.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.5];
        [self addSubview:self.view];
        [self.view addGestureRecognizer:self.viewTap];
        [self addSubview:self.backView];
        [self.backView addSubview:self.titleLabel];
        [self.backView addSubview:self.backViewOne];
        [self.backViewOne addSubview:self.placeHoldLabelOne];
        [self.backViewOne addSubview:self.textFieldOne];
        [self.backView addSubview:self.backViewTwo];
        [self.backViewTwo addSubview:self.placeHoldLabelTwo];
        [self.backViewTwo addSubview:self.textFieldTwo];
        [self.backView addSubview:self.hengXian];
        [self.backView addSubview:self.shuxian];
        [self.backView addSubview:self.agreeButton];
        [self.backView addSubview:self.dissAgreeButton];
        [self setLabel:self.titleLabel withText:title lineSpacing:7];
        [self.placeHoldLabelOne setText:lineTitleOne];
        [self.placeHoldLabelTwo setText:lineTitleTwo];
        self.textFieldOne.placeholder = placeHoldOne;
        self.textFieldTwo.placeholder = placeHoldTwo;
    
    }
    return self;
}

-(instancetype)initWithTitle:(NSString *)title lineTitleOne:(NSString *)lineTitleOne lineTitleTwo:(NSString *)lineTitleTwo placeHoldOne:(NSString *)placeHoldOne andPlaceHoldTwo:(NSString *)placeHoldTwo LineOne:(NSString *)lineOne andLineTwo:(NSString *)lineTwo{
    self = [super init];
    if (self) {
        self.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.5];
        [self addSubview:self.view];
        [self.view addGestureRecognizer:self.viewTap];
        [self addSubview:self.backView];
        [self.backView addSubview:self.titleLabel];
        [self.backView addSubview:self.backViewOne];
       [self.backViewOne addSubview:self.placeHoldLabelOne];
        [self.backViewOne addSubview:self.textFieldOne];
        [self.backView addSubview:self.backViewTwo];
        [self.backViewTwo addSubview:self.placeHoldLabelTwo];
        [self.backViewTwo addSubview:self.textFieldTwo];
        [self.backView addSubview:self.hengXian];
        [self.backView addSubview:self.shuxian];
        [self.backView addSubview:self.agreeButton];
        [self.backView addSubview:self.dissAgreeButton];
        [self setLabel:self.titleLabel withText:title lineSpacing:7];
        [self.placeHoldLabelOne setText:lineTitleOne];
        [self.placeHoldLabelTwo setText:lineTitleTwo];
        self.textFieldOne.text = lineOne;
        self.textFieldTwo.text = lineTwo;
        self.textFieldOne.placeholder = placeHoldOne;
        self.textFieldTwo.placeholder = placeHoldTwo;
    }
    return self;
}

//布局
-(void)layoutSubviews{
    [super layoutSubviews];
    @weakify(self);
    [self.view mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.left.right.top.bottom.equalTo(self);
    }];

   [self.backView mas_remakeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        if (self.offSet != 0 ) {
            make.centerY.equalTo(self.mas_centerY).with.offset(-self.offSet);
            make.left.equalTo(self.mas_left).with.offset(30);
            make.right.equalTo(self.mas_right).with.offset(-30);
            make.height.mas_offset(206);
        }else{
            make.centerY.equalTo(self.mas_centerY).with.offset(0);
            make.left.equalTo(self.mas_left).with.offset(30);
            make.right.equalTo(self.mas_right).with.offset(-30);
            make.height.mas_offset(206);
        }
    }];

    [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.top.mas_offset(20);
        make.centerX.mas_equalTo(0);
        make.width.equalTo(self.backView.mas_width);
        make.height.mas_offset(20);
    }];

    [self.backViewOne mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.top.equalTo(self.titleLabel.mas_bottom).with.offset(10);
        make.left.equalTo(self.backView.mas_left).with.offset(20);
        make.right.equalTo(self.backView.mas_right).with.offset(-20);
        make.height.mas_offset(40);
    }];

    [self.placeHoldLabelOne mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.centerY.equalTo(self.backViewOne.mas_centerY);
        make.left.equalTo(self.backViewOne.mas_left).with.offset(5);
        make.height.mas_offset(20);
        make.width.mas_offset(70);
    }];

    [self.textFieldOne mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.centerY.equalTo(self.backViewOne.mas_centerY);
        make.left.equalTo(self.placeHoldLabelOne.mas_right);
        make.right.equalTo(self.backViewOne.mas_right).with.offset(-5);
        make.height.mas_offset(25);
    }  ];

    [self.backViewTwo mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.top.equalTo(self.backViewOne.mas_bottom).with.offset(10);
        make.left.equalTo(self.backView.mas_left).with.offset(20);
        make.right.equalTo(self.backView.mas_right).with.offset(-20);
        make.height.mas_offset(40);
    }];

[self.placeHoldLabelTwo mas_makeConstraints:^(MASConstraintMaker *make) {
    @strongify(self);
    make.centerY.equalTo(self.backViewTwo.mas_centerY);
    make.left.equalTo(self.backViewTwo.mas_left).with.offset(5);
    make.height.mas_offset(20);
    make.width.mas_offset(70);
}];

    [self.textFieldTwo mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.centerY.equalTo(self.backViewTwo.mas_centerY);
        make.left.equalTo(self.placeHoldLabelTwo.mas_right);
        make.right.equalTo(self.backViewTwo.mas_right).with.offset(-5);
        make.height.mas_offset(25);
    }];

    [self.hengXian mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.top.equalTo(self.backViewTwo.mas_bottom).with.offset(15);
        make.centerX.equalTo(self.backView.mas_centerX);
        make.height.mas_offset(1);
        make.width.equalTo(self.backView.mas_width);
    }];

    [self.shuxian mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.centerX.equalTo(self.backView);
        make.top.equalTo(self.hengXian);
        make.bottom.equalTo(self.backView);
        make.width.mas_offset(1);
    }];
    
    [self.agreeButton mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.top.equalTo(self.hengXian.mas_bottom).with.offset(1);
        make.left.equalTo(self.shuxian.mas_right).with.offset(1);
        make.bottom.equalTo(self.backView.mas_bottom).with.offset(-1);
        make.right.equalTo(self.backView.mas_right);
    }];

    [self.dissAgreeButton mas_makeConstraints:^(MASConstraintMaker *make) {
        @strongify(self);
        make.top.equalTo(self.hengXian.mas_bottom).with.offset(1);
        make.left.equalTo(self.backView.mas_left).with.offset(1);
        make.bottom.equalTo(self.backView.mas_bottom).with.offset(-1);
        make.right.equalTo(self.shuxian.mas_left).with.offset(-1);
    }];
}

#pragma mark - action Method
//点击其他区域
- (void)viewTap:(UIGestureRecognizer *)gesture {
    if ([_delegate respondsToSelector:@selector(disclaimerViewTap)]) {
        [_delegate disclaimerViewTap];
        [MainWindow endEditing:YES];
    }
}
//不同意
-(void)dissAgreeButtonClick{
    if ([_delegate respondsToSelector:@selector(dissAgreeClick)]) {
        [_delegate dissAgreeClick];
    }
}
//同意
-(void)agreeButtonClick{
    if ([_delegate respondsToSelector:@selector(agreeClickWithLineOne:andLineTwo:)]) {
        [_delegate agreeClickWithLineOne:self.textFieldOne.text     andLineTwo:self.textFieldTwo.text];
    }
}

/**
 设置文本,并指定行间距
 @param label 要改的label
 @param text 文本内容
 @param lineSpacing 行间距
 */
-(void)setLabel:(UILabel *)label withText:(NSString*)text lineSpacing:(CGFloat)lineSpacing{
    if (!text || lineSpacing < 0.01) {
        label.text = text;
        return;
    }
    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init];
    [paragraphStyle setLineSpacing:lineSpacing];        //设置行间距
    [paragraphStyle setLineBreakMode:label.lineBreakMode];
    [paragraphStyle setAlignment:label.textAlignment];

    NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:text];
    [attributedString addAttribute:NSParagraphStyleAttributeName value:paragraphStyle range:NSMakeRange(0, [text length])];
    label.attributedText = attributedString;
}

/ **
 *  获取颜色 含有alpha
 *
 *  @param color 6位16进制字符串
 *  @param alpha 透明度
 *
 *  @return 颜色
 */
- (UIColor *)colorWithHexString:(NSString *)color alpha:(CGFloat)alpha {
NSString *cString = [[color stringByTrimmingCharactersInSet:[NSCharacterSet     whitespaceAndNewlineCharacterSet]] uppercaseString];
    if ([cString length] < 6) {
        return [UIColor clearColor];
    }
    if ([cString hasPrefix:@"0X"]) {
        cString = [cString substringFromIndex:2];
    }
    if ([cString hasPrefix:@"#"]) {
        cString = [cString substringFromIndex:1];
    }
    if ([cString length] != 6) {
        return [UIColor clearColor];
    }
   NSRange range;
    range.location = 0;
    range.length = 2;
    NSString *rString = [cString substringWithRange:range];
    range.location = 2;
    NSString *gString = [cString substringWithRange:range];
    range.location = 4;
    NSString *bString = [cString substringWithRange:range];
    unsigned int r, g, b;
    [[NSScanner scannerWithString:rString] scanHexInt:&r];
    [[NSScanner scannerWithString:gString] scanHexInt:&g];
    [[NSScanner scannerWithString:bString] scanHexInt:&b];
    return [UIColor colorWithRed:((float)r / 255.0f) green:((float)g / 255.0f) blue:((float)b / 255.0f) alpha:alpha];
}
/**
 *  获取颜色
 *
 *  @param color 6位16进制字符串
 *
 *  @return 颜色
 */
- (UIColor *)colorWithHexString:(NSString *)color {
    return [self colorWithHexString:color alpha:1];
}

#pragma mark - getter and setter

-(UITapGestureRecognizer *)viewTap{
    if (!_viewTap) {
        _viewTap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(viewTap:)];
    }
    return _viewTap;
}
-(UIView *)view{
    if (!_view) {
        _view = [[UIView alloc]init];
        _view.userInteractionEnabled = YES;
        _view.backgroundColor = [[UIColor blackColor]colorWithAlphaComponent:0.5];
    }
    return _view;
}
//背景View
-(UIView *)backView{
    if (!_backView) {
        _backView = [[UIView alloc]init];
        _backView.backgroundColor = [self colorWithHexString:@"#f2f2f2"];
        _backView.userInteractionEnabled = YES;
        _backView.layer.masksToBounds = YES;
        _backView.layer.cornerRadius = 5;
    }
    return _backView;
}

//title
-(UILabel *)titleLabel{
    if (!_titleLabel) {
        _titleLabel = [[UILabel alloc]init];
        _titleLabel.font = [UIFont systemFontOfSize:17];
        _titleLabel.textAlignment = NSTextAlignmentCenter;
        _titleLabel.textColor = [UIColor blackColor];
    }
    return _titleLabel;
}



//横线
-(UIView *)hengXian{
    if (!_hengXian) {
        _hengXian = [[UIView alloc]init];
        _hengXian.backgroundColor = [self colorWithHexString:@"#e8e8e8"];
    }
    return _hengXian;
}    

//竖线
-(UIView *)shuxian{
    if (!_shuxian) {
        _shuxian = [[UIView alloc]init];
        _shuxian.backgroundColor = [self colorWithHexString:@"#e8e8e8"];
    }
    return _shuxian;
}

//同意按钮
-(UIButton *)agreeButton{
    if (!_agreeButton) {
        _agreeButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [_agreeButton setTitle:@"确定" forState:UIControlStateNormal];
        [_agreeButton.titleLabel setFont:[UIFont systemFontOfSize:15]];
        [_agreeButton setTitleColor:[self colorWithHexString:@"007edd"]   forState:UIControlStateNormal];
        [_agreeButton addTarget:self action:@selector(agreeButtonClick) forControlEvents:UIControlEventTouchUpInside];
    
    }
    return _agreeButton;
}

//不同意按钮
-(UIButton *)dissAgreeButton{
    if (!_dissAgreeButton) {
        _dissAgreeButton = [UIButton buttonWithType:UIButtonTypeCustom];
        [_dissAgreeButton setTitle:@"取消" forState:UIControlStateNormal];
        [_dissAgreeButton.titleLabel setFont:[UIFont systemFontOfSize:15]];
        [_dissAgreeButton setTitleColor:[self colorWithHexString:@"#535364"] forState:UIControlStateNormal];
        [_dissAgreeButton addTarget:self   action:@selector(dissAgreeButtonClick)forControlEvents:UIControlEventTouchUpInside];
    }
    return _dissAgreeButton;
}

//view1
-(UIView *)backViewOne{
    if (!_backViewOne) {
        _backViewOne = [[UIView alloc]init];
        _backViewOne.backgroundColor = [UIColor whiteColor];
       _backViewOne.layer.masksToBounds = YES;
        _backViewOne.layer.cornerRadius = 5.0;
        _backViewOne.layer.borderColor = [self colorWithHexString:@"e6e6e6"].CGColor;
        _backViewOne.layer.borderWidth = 1;
    }
    return _backViewOne;
}
//view2
-(UIView *)backViewTwo{
    if (!_backViewTwo) {
        _backViewTwo = [[UIView alloc]init];
        _backViewTwo.backgroundColor = [UIColor whiteColor];
        _backViewTwo.layer.masksToBounds = YES;
        _backViewTwo.layer.cornerRadius = 5.0;
        _backViewTwo.layer.borderColor = [self colorWithHexString:@"e6e6e6"].CGColor;
        _backViewTwo.layer.borderWidth = 1;
    }
   return _backViewTwo;
}
//placeHoldLabel1
-(UILabel *)placeHoldLabelOne{
    if (!_placeHoldLabelOne) {
        _placeHoldLabelOne = [[UILabel alloc]init];
            //        _placeHoldLabelOne.backgroundColor = [UIColor yellowColor];
        _placeHoldLabelOne.textColor =[self colorWithHexString:@"#535364"];
        _placeHoldLabelOne.font = [UIFont systemFontOfSize:13];
        _placeHoldLabelOne.textAlignment = NSTextAlignmentCenter;
    }
        return _placeHoldLabelOne;
}
//placeHoldLabel2
-(UILabel *)placeHoldLabelTwo{
    if (!_placeHoldLabelTwo) {
        _placeHoldLabelTwo = [[UILabel alloc]init];
        //        _placeHoldLabelTwo.backgroundColor = [UIColor yellowColor];
       _placeHoldLabelTwo.textColor =[self colorWithHexString:@"#535364"];
        _placeHoldLabelTwo.font = [UIFont systemFontOfSize:13];
        _placeHoldLabelTwo.textAlignment = NSTextAlignmentCenter;
    }
    return _placeHoldLabelTwo;
}

//textField1
-(UITextField *)textFieldOne{
    if (!_textFieldOne) {
        _textFieldOne =[[UITextField alloc]init];
        _textFieldOne.font = [UIFont systemFontOfSize:14];
        _textFieldOne.textColor = [self colorWithHexString:@"#535364"];
        _textFieldOne.clearButtonMode = YES;
        //        _textFieldOne.backgroundColor = [UIColor blueColor];
    }
    return _textFieldOne;
}    

//textField2
-(UITextField *)textFieldTwo{
    if (!_textFieldTwo) {
        _textFieldTwo =[[UITextField alloc]init];
        _textFieldTwo.font = [UIFont systemFontOfSize:14];
        _textFieldTwo.textColor = [self colorWithHexString:@"#535364"];
        _textFieldTwo.clearButtonMode = YES;
        //        _textFieldTwo.backgroundColor = [UIColor blueColor];
    }
    return _textFieldTwo;
  }

/*
 // Only override drawRect: if you perform custom drawing.
 // An empty implementation adversely affects performance during animation.
 - (void)drawRect:(CGRect)rect {
 // Drawing code
 }
 */

@end

代码地址https://github.com/nickzc/commonAlertText

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 214,377评论 6 496
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,390评论 3 389
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,967评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,344评论 1 288
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,441评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,492评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,497评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,274评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,732评论 1 307
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 37,008评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,184评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,837评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,520评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,156评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,407评论 1 268
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 47,056评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 44,074评论 2 352

推荐阅读更多精彩内容

  • 用到的组件 1、通过CocoaPods安装 2、第三方类库安装 3、第三方服务 友盟社会化分享组件 友盟用户反馈 ...
    SunnyLeong阅读 14,609评论 1 180
  • 工作生活中“多想一步”或者“多想一点点”,在许多人眼里看起来似乎没有什么了不起,或者没有太大的用处,那么就让我来给...
    39c2ad11eb0d阅读 345评论 0 0
  • 版权归作者所有,任何形式转载请联系作者。 作者:blair bass(来自豆瓣)--是我本人,转到简书上 来源:h...
    vicky5阅读 695评论 0 0
  • 手机确实藏了我们太多的秘密,不应该拿手机来玩游戏。每个人也都有连自己的伴侣都不想知道的秘密,一辈子都不想让其他人知...
    成长期的黑鱼阅读 353评论 2 2
  • 我们在生活中很难做到想说什么就说什么,有时候会遇到一些艰难的对话。导致艰难对话的原因可能有很多,比如你说的话可能是...
    EC君_王磊阅读 211评论 0 0