从使用 CALayer 样式的 UITextField 中的占位符文本中删除阴影

     2023-03-05     232

关键词:

【中文标题】从使用 CALayer 样式的 UITextField 中的占位符文本中删除阴影【英文标题】:Remove shadow from placeholder text in UITextField styled using CALayer 【发布时间】:2013-11-27 04:04:46 【问题描述】:

我从 Interface Builder(IB) 创建了一个 UITextField。 因为我想要自定义样式,所以我在 IB 中选择了 None 样式。 在 viewDidLoad 上,我为它分配了以下样式:

txtEmail.layer.cornerRadius = 8.0;
txtEmail.layer.borderColor = [UIColor colorWithWhite:199.0/255.0 alpha:1].CGColor;
txtEmail.layer.borderWidth = 1.0;
txtEmail.layer.shadowColor = [UIColor blackColor].CGColor;
txtEmail.layer.shadowOpacity = 0.17;
txtEmail.layer.shadowOffset = CGSizeMake(-0.9,0.9);
txtEmail.layer.shadowRadius = 1.1;

// This is to provide a left padding for None styled textfields
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];
txtEmail.leftView = paddingView;
txtEmail.leftViewMode = UITextFieldViewModeAlways;

现在我的文本字段的样式变得完美,但我的占位符文本(在 IB 中提供)也继承了该阴影。我怎样才能摆脱它?

【问题讨论】:

【参考方案1】:

发现下面的代码工作正常,你需要删除shadowRadius

txtEmail.backgroundColor = [UIColor clearColor];
txtEmail.layer.cornerRadius = 8.0;
txtEmail.layer.borderColor = [UIColor colorWithWhite:199.0/255.0 alpha:1].CGColor;
txtEmail.layer.borderWidth = 1.0;
txtEmail.layer.shadowColor = [UIColor blackColor].CGColor;
txtEmail.layer.shadowOpacity = 0.17;
txtEmail.layer.shadowOffset = CGSizeMake(-0.9,0.9);
txtEmail.layer.masksToBounds = false;

// This is to provide a left padding for None styled textfields
UIView *paddingView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 5, 20)];
txtEmail.leftView = paddingView;
txtEmail.leftViewMode = UITextFieldViewModeAlways;
[self.view addSubview:txtEmail];

【讨论】:

CALayer 从当前值淡出

】CALayer从当前值淡出【英文标题】:CALayerfadefromcurrentvalue【发布时间】:2012-04-1821:56:54【问题描述】:我的应用使用CALayer来绘制视图。更准确地说,它在UIView的顶层的子层上使用​​drawLayer:inContext:方法。这是让连续drawLayer:inCo... 查看详情

使用 CALayer 的 UIView 没有出现阴影

】使用CALayer的UIView没有出现阴影【英文标题】:ShadownotappearingforUIViewusingCALayer【发布时间】:2011-11-0802:06:02【问题描述】:我有一个从笔尖加载的子类UIView,我无法在它周围绘制阴影。我试图让阴影出现在整个视图周围很长一... 查看详情

QuartzCore 的 CALayer 问题

】QuartzCore的CALayer问题【英文标题】:CALayerissueswithQuartzCore【发布时间】:2013-02-1520:47:45【问题描述】:我正在使用CAGradientLayer来设置我的uibuttons样式。基本上在一个单元格中有三个按钮。当我首先设置CAGradientLayer属性时,它工... 查看详情

CATiledLayer 到 CALayer

】CATiledLayer到CALayer【英文标题】:CATiledLayertoCALayer【发布时间】:2012-06-2015:11:59【问题描述】:我有一个带有CATiledLayer支持的视图。我想从这个CATiledLayerUIView中获取可见图块并将其添加到另一个视图作为其CALayer支持,从而在另... 查看详情

更新 CALayer 的旋转

】更新CALayer的旋转【英文标题】:UpdatetherotationofaCALayer【发布时间】:2014-12-1811:51:49【问题描述】:我正在尝试更新CALayer的当前旋转(有时是位置)。我想通过几个简单的步骤来实现:将几个CALayers存储在一个数组中,以便我... 查看详情

CALayer - 未调用显示方法

】CALayer-未调用显示方法【英文标题】:CALayer-displaymethodnotbeingcalled【发布时间】:2011-12-3017:11:51【问题描述】:我正在使用CoreAnimation为iPad制作一本图画书。我做了类似Sprite类(CALayer子类)的操作,以便能够从精灵表加载我的... 查看详情

如何在 CALayer 中绘制简单的位图文本?

】如何在CALayer中绘制简单的位图文本?【英文标题】:HowtodrawsimplebitmaptextinaCALayer?【发布时间】:2017-03-2906:24:36【问题描述】:我想使用包含大约18个固定宽度(9x15,1x和视网膜尺寸)字符的类似精灵表的图像将大量字符串绘制... 查看详情

从正方形到圆形(或圆角)动画 CALayer 阴影

】从正方形到圆形(或圆角)动画CALayer阴影【英文标题】:AnimateCALayershadowfromsquaretocircle(orroundedcorners)【发布时间】:2015-08-2807:01:06【问题描述】:我有一个UIImageView,它使用以下代码从正方形动画到圆形:CABasicAnimation*circleShape... 查看详情

在 CALayer 中为 UIImages 分配自己的 Rect 的机制?

】在CALayer中为UIImages分配自己的Rect的机制?【英文标题】:MechanismtoassignUIImagestheirownRectinsideaCALayer?【发布时间】:2013-03-1711:46:39【问题描述】:我有一个或多个代表/填充整个屏幕的CALayers。我想从网格结构中填充那些CALayers,... 查看详情

在 CALayer 上触摸手势

】在CALayer上触摸手势【英文标题】:TouchGestureonaCALayer【发布时间】:2010-07-0723:43:19【问题描述】:我正在CALayer上进行一些绘图,并希望能够让用户单击绘图的不同部分并触发响应。我尝试研究手势识别器,似乎它们需要绑定到... 查看详情

从 CALayer 掩码中清除?

】从CALayer掩码中清除?【英文标题】:ClearfromCALayermask?【发布时间】:2013-10-1111:03:18【问题描述】:我有一个基础层,用透明遮罩层遮罩。遮罩层有一个子层,一个透明的圆圈。工作正常,基础层被圆圈掩盖。但我想用圆圈清... 查看详情

使用普通的 CALayer 显示图像或 UIImage

】使用普通的CALayer显示图像或UIImage【英文标题】:DisplayanimageorUIImagewithaplainCALayer【发布时间】:2009-10-1408:12:38【问题描述】:我经常读到使用CALayer而不是UIImageView会在大量使用图像时提高性能。这是有道理的,因为UIImageView会... 查看详情

使用 CALayer 显示 alpha 映射图像

】使用CALayer显示alpha映射图像【英文标题】:UsingaCALayertodisplayanalphamappedimage【发布时间】:2012-03-2610:44:41【问题描述】:我有一个CALayer对象,我想在其中插入一个配备alpha贴图的UIImage,只需设置图层的内容属性即可。但是,当... 查看详情

在 Swift 中使用动画调整 CALayer 的大小

】在Swift中使用动画调整CALayer的大小【英文标题】:ResizeaCALayerwithanimationinSwift【发布时间】:2015-07-2520:09:24【问题描述】:我已将CALayer添加到图像中,执行以下操作:varmenulayer=CALayer()menulayer.frame=CGRectMake(0.0,0.0,menuimage.frame.size.w... 查看详情

为啥必须使用 CALayer 的presentationLayer 进行命中测试?

】为啥必须使用CALayer的presentationLayer进行命中测试?【英文标题】:WhydoesonehavetouseCALayer\'spresentationLayerforhit-testing?为什么必须使用CALayer的presentationLayer进行命中测试?【发布时间】:2010-02-0411:17:03【问题描述】:我正在开发一... 查看详情

如何检测两个 CALayer 是不是重叠?

】如何检测两个CALayer是不是重叠?【英文标题】:HowcanidetectwhethertwoCALayersoverlap?如何检测两个CALayer是否重叠?【发布时间】:2012-07-1122:31:32【问题描述】:在我的应用中,用户可以从一堆CALayer中拖动顶部的CALayer。当用户停止... 查看详情

如何使用 CATransaction 为 CALayer 的出现设置动画?

】如何使用CATransaction为CALayer的出现设置动画?【英文标题】:HowtoanimatetheappearingofaCALayerusingCATransaction?【发布时间】:2021-10-0407:49:40【问题描述】:我想为CALAyer制作动画,让它看起来像是凭空出现的。我想我可以先将图层的变... 查看详情

什么时候可以使用 CALayer.timeOffset

】什么时候可以使用CALayer.timeOffset【英文标题】:WhenisCALayer.timeOffsetreadytobeused【发布时间】:2017-07-2911:37:12【问题描述】:在高级CALayer问题上需要一些帮助。我有一个添加CAShapeLayer的UIView。图层已暂停(速度=0),并且附加了... 查看详情