iOS端实现登录输入框的三种思路(包含UIBezierPath等)

今天跟我们的UI 对现在的应用界面,突然发现了一个问题,就是我的输入框为什么和他给出的不一样..
做完效果:

要求效果:

没办法,改呗.
既然设计到边框,首先要先明确切圆角和绘制边框线的方法.
<span style="font-size:18px;">view.layer.cornerRadius = 8.0;
view.layer.masksToBounds = YES;</span>

绘制边框线
<span style="font-size:18px;">    _verifty_TF.layer.borderWidth = 1;
    _verifty_TF.layer.borderColor = [SKUIColorFromRGB(0xdcdcdc) CGColor];</span>

说白了其实都是通过层对象的cornerRadius属性来实现圆角效果.

想实现下面的效果,想了下应该有三种思路.

思路一:

自己通过设置切角的作用域,以此来达到效果


UIView *view2 = [[UIView alloc] initWithFrame:CGRectMake(120, 10, 80, 80)];
view2.backgroundColor = [UIColor redColor];
[self.view addSubview:view2];

//设置偏移角总用有五个方向   TopLeft , TopRight , BottomLeft , BottomRight ,ALL
UIBezierPath *maskPath = [UIBezierPath bezierPathWithRoundedRect:view2.bounds byRoundingCorners:UIRectCornerBottomLeft | UIRectCornerBottomRight cornerRadii:CGSizeMake(10, 10)];
CAShapeLayer *maskLayer = [[CAShapeLayer alloc] init];
maskLayer.frame = view2.bounds;
maskLayer.path = maskPath.CGPath;
view2.layer.mask = maskLayer;

但是完成后出现了一个问题, 切正常图形是好用的 , 但是我的输入框边线怎么也切没啦???




我去,什么鬼?   方案一 作废!

思路二:

通过视图的叠加,即下方创建一个带灰色线的视图,上面放两个透明的输入框,最后中间补上一条线..

从新创建一个视图,继承于 UIView , 原本准备是使用 - ( void )drawRect:( CGRect )rect { // Drawing code }的
但是感觉不是特别好用,所以最后还是选择通过添加一个 View 的方式来做了  (实际上就是我太 LOW)

.H
#import <UIKit/UIKit.h>

@interface SKRectTextField : UIView

+(SKRectTextField *)textFieldByRectWithFrame:(CGRect)frame placeHold_1:(NSString *)placeHold_1 placeHold_2:(NSString *)placeHold_2 backgroundColor:(UIColor *)backgroundColor lineColor:(UIColor *)lineColor;

@end

.M
#import "SKRectTextField.h"

@implementation SKRectTextField

+(SKRectTextField *)textFieldByRectWithFrame:(CGRect)frame placeHold_1:(NSString *)placeHold_1 placeHold_2:(NSString *)placeHold_2 backgroundColor:(UIColor *)backgroundColor lineColor:(UIColor *)lineColor{

    //创建背景视图
    SKRectTextField *backgroundView = [[SKRectTextField alloc]initWithFrame:frame];
    backgroundView.backgroundColor = backgroundColor;
    backgroundView.layer.masksToBounds = YES;
    backgroundView.layer.cornerRadius = 5;
    backgroundView.layer.borderColor = lineColor.CGColor;
    backgroundView.layer.borderWidth = 1;
    //创建第一个输入框
    UITextField *textField_1 = [[UITextField alloc]initWithFrame:CGRectMake(10, 0, frame.size.width - 10, frame.size.height / 2)];
    textField_1.placeholder = placeHold_1;
    [backgroundView addSubview:textField_1];

    //创建第二个输入框
    UITextField *textField_2 = [[UITextField alloc]initWithFrame:CGRectMake(10, frame.size.height / 2, frame.size.width - 10, frame.size.height / 2)];
    textField_2.placeholder = placeHold_2;
    [backgroundView addSubview:textField_2];

    //创建线的视图
    UIView *lineView = [[UIView alloc]initWithFrame:CGRectMake(0, frame.size.height / 2, frame.size.width, 1)];
    lineView.backgroundColor = lineColor;
    [backgroundView addSubview:lineView];

    return backgroundView;

}

@end

实现出来效果:


算是基本实现了效果,那还有没有其他方案呢?

思路三:

上网找的,但是自己没去尝试,只做参考

通过另一张mask图创建新图

首先需要一张mask图,然后将这张mask图和原图合成,得到带圆角的新图。合成新图等同于在off-screen作图。该方法的优点是可以不局限于圆角,全凭mask图控制。

例子中,tab 1是无圆角效果,其他三个tab各自对应三种方法。


最后附上一个附录

附录:

//获取绘图上下文
CGContextRef context=UIGraphicsGetCurrentContext();
//设置粗细
CGContextSetLineWidth(context,0.2);
//开始绘图
CGContextBeginPath(context);
//移动到开始绘图点
CGContextMoveToPoint(context,5,50);
//移动到第二个点
CGContextAddLineToPoint(context,self.frame.size.width-5,50);
//关闭路径
CGContextClosePath(context);
//设置颜色
[[UIColorgrayColor] setStroke];
//绘图
CGContextStrokePath(context);


更多精彩文章,尽在我的公众号.


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
实现iOS的聊天输入框功能,可以按照以下步骤进行: 第一步,创建一个包含输入框的视图控制器。可以使用UITextField或UITextView来创建输入框,并设置好相应的属性,例如输入框的大小、位置、边框样式等。 第二步,设置输入框的代理。通过设置输入框的代理,可以监听输入框的文字变化、键盘弹出和隐藏等事件,并做出相应的处理。 第三步,实现输入框的自动调整高度功能。聊天输入框通常需要根据输入的文字内容自动调整高度,以方便用户输入长文本。可以通过监听输入框的文字变化,并计算输入框内容所需的高度,然后实时更新输入框的高度。 第四步,处理键盘的弹出和隐藏。当用户点击输入框时,系统会自动弹出键盘。为了不遮挡输入框,需要将输入框随键盘的弹出而上移,以保证用户能够看到正在输入的文字。可以使用NSNotification来监听键盘的弹出和隐藏事件,并相应地更新输入框的位置。 第五步,实现发送按钮的功能。在聊天输入框中一般会有一个发送按钮,用于发送消息。可以通过添加一个UIButton,并设置好按钮的样式和位置。然后,监听发送按钮的点击事件,并处理发送消息的逻辑,例如将消息发送到服务器或本地数据库。 在实现聊天输入框功能的过程中,还可以根据需求添加一些其他的功能,如表情符号的支持、附件的发送等。通过以上步骤,就可以实现一个基本的聊天输入框功能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值