IOS - 从 UITextView 中删除所有填充

     2023-03-06     241

关键词:

【中文标题】IOS - 从 UITextView 中删除所有填充【英文标题】:IOS - remove ALL padding from UITextView 【发布时间】:2013-03-27 06:46:02 【问题描述】:

在 SO 上有很多很好的例子来移除 UITextView 的左填充。

How to lose margin/padding in UITextView?

但是,我也需要删除正确的填充。

我试过了……

[tv setContentInset: UIEdgeInsetsMake(-4,-8,-8,-X)];//where X is any integer

几乎所有其他最后两个值的排列都删除了填充,但似乎没有任何效果。也试过了

[tv sizeToFit];
[tv setTextAlignment:[NSTextAlignmentRight]];

Textview 中的以下文本显示“00”

【问题讨论】:

我试过用你说的空字符串替换一个空字符串。但是,如果我现在注释掉插图,我就会再次使用顶部和左侧填充。 不是empty with empty。将" "(空格)替换为""(空)。是否可以将 UITextView 替换为自定义 UILabel? 我将字符串设置为“00”,没有空格。我不确定它是否可能,但我为 navigation.rightbarbuttonitem 创建了一个 UIview,然后使用自定义视图进行了初始化。我在视图中添加了一个图像视图和一个文本视图,我认为我不能子视图标签 UILabel 错误,我的意思是自定义 UITextField。 UITextView 继承自 UIScrollView,在这个短字段中包含很多你不需要的东西。 但是文本字段会出现同样的填充问题吗?我禁用了大多数滚动视图功能,例如可编辑、启用滚动功能以及其他一些功能。 【参考方案1】:

请尝试对 UITextView 进行子类化并覆盖以下方法:

    - (id)styleString

    return [[super styleString] stringByAppendingString:@"; line-height: 1.6em;margin-right: 30px; margin-left: 0px; margin-top: 0px;"];

显然;你可以调整margin-left、margin-top和任何你想要的;)

【讨论】:

是iOS6的最佳解决方案。但它需要像这样向前声明:@interface UITextView (Stylesheet) -(id)styleString; @end 这个过去的答案仍然非常出色,但现在 Swift 中的上述答案(dbart/mattsven 等)是 Swift 的答案!【参考方案2】:

虽然它只是 iOS 7,但一个非常干净的解决方案是将 textView 的 textContainerInsets 设置为:

[textView setTextContainerInset:UIEdgeInsetsZero];
textView.textContainer.lineFragmentPadding = 0; // to remove left padding

这将有效地删除文本视图内文本周围的所有填充(插入)。如果您的部署目标是 iOS 7+,那么这是迄今为止最好的解决方案。

【讨论】:

完全按照说明工作。 UITextView textContainerInset 是专门为此目的而制作的,因为它不需要子类,所以它是运行 iOS7 及更高版本的系统的最佳答案。 也添加此行以删除左侧填充 self.textView.textContainer.lineFragmentPadding = 0; 为我工作!我在ios7+ 这应该被标记为正确答案。谢谢楼主! Apple Docs 有一个很好的视觉描述【参考方案3】:

我的问题就这样解决了

if([Utils isiOS7orHigher])
    commentView.textContainerInset = UIEdgeInsetsZero;
else 
    commentView.contentInset = UIEdgeInsetsMake(-11,-8,0,0);

更多信息请参见http://foobarpig.com/iphone/get-rid-of-uitextview-padding.html

【讨论】:

一般来说,像在 else 语句中那样硬编码值并不是一个好主意。你永远不知道这会在未来发生怎样的变化,或者在不同的设备上显示等等。 如上所述,这不是一个好的解决方案。像这样“猜测”值从来都不是一件好事 - 你应该通过计算它来找出插图是什么,或者只是用你正在处理的项目的适当特征来消除它。 textView.textContainerInset = UIEdgeInsets.zero 和 textView.textContainer.lineFragmentPadding = 0 在这种情况下就像一个魅力..【参考方案4】:

要完全删除所有填充,必须考虑lineFragmentPadding

let padding = textView.textContainer.lineFragmentPadding
textView.textContainerInset =  UIEdgeInsets(top: 0, left: -padding, bottom: 0, right: -padding)

lineFragmentPadding 默认值为 5,位于片段矩形的开头和结尾。

一些答案​​建议将lineFragmentPadding 设置为0。但是,根据文档中的讨论,它并非旨在表达文本边距。所以不要设置为 0。

【讨论】:

这是最好的解决方案,因为它使用默认的 lineFragmentPadding 值而不是硬编码数字。对于较新的 swift 使用 textContainerInset = UIEdgeInsets(top: 0, left: -padding, bottom: 0, right: -padding)【参考方案5】:

用于 OA 的 Swift 4 版本

self.tDescription.textContainerInset = UIEdgeInsets.zero
self.tDescription.textContainer.lineFragmentPadding = 0

【讨论】:

【参考方案6】:

适用于 iOS 11.7

以下代码对我有用:

    textView.textContainer.lineFragmentPadding = CGFloat(0.0)
    textView.textContainerInset = UIEdgeInsets(top: 0, left: 0, bottom: 0, right: 0)
    textView.contentInset = UIEdgeInsets(top: 0,left: 0,bottom: 0,right: 0)

来自官方Documentation:

textContainerInset : 可以设置文本容器和视图大小以及调整大小行为,以便无法准确维护inset,尽管文本系统会尽可能地维护inset

在任何情况下,文本容器的textContainerOrigin 和大小对于文本容器在视图中的位置具有权威性。 文本本身可以在文本容器内有一个额外的插入,由NSTextContainerlineFragmentPadding 方法指定。

【讨论】:

从Superview中删除时UITextView不会消失

】从Superview中删除时UITextView不会消失【英文标题】:UITextViewdoesn\'tdisappearwhenremovedFromSuperview【发布时间】:2012-12-0406:52:26【问题描述】:我有两个UITextViews,self.instructions和self.textView,它们应该根据用户的选择交替出现。我像这... 查看详情

从 UITextView 的菜单中选择和删除文本时崩溃

】从UITextView的菜单中选择和删除文本时崩溃【英文标题】:CrashupontextselectionanddeletionfrommenuinUITextView【发布时间】:2011-11-0817:20:28【问题描述】:我的UITextViews在文本选择和删除时使应用程序崩溃。剪切、复制和粘贴似乎都可以... 查看详情

从 iPad 上的 UITextView 键盘中删除“关闭键盘”键

】从iPad上的UITextView键盘中删除“关闭键盘”键【英文标题】:Removethe"Dismisskeybard"keyfromaUITextView\'skeyboardoniPad【发布时间】:2011-05-1114:22:20【问题描述】:我有一个带有UITextView的模态视图,用户可以输入一些文本(或不... 查看详情

如何在ios中限制UITextView中的内容

】如何在ios中限制UITextView中的内容【英文标题】:HowtolimitthecontentinUITextViewinios【发布时间】:2014-02-0810:00:16【问题描述】:我想在不同视图的TextViews中加载长文本。当文本到达文本视图的末尾时,文本应该被分成几页。并且下... 查看详情

Woocommerce 从“附加信息”中删除必填字段

】Woocommerce从“附加信息”中删除必填字段【英文标题】:WoocommerceRemovingrequiredfieldsfrom"AdditionalInformation"【发布时间】:2019-10-1300:56:00【问题描述】:我在Woocommerce中有一个免费产品,并使用Skyverge的本教程来简化结帐流... 查看详情

扩展 UITextView 高度,使其适合 JSON 字符串中的所有内容(iOS7)

】扩展UITextView高度,使其适合JSON字符串中的所有内容(iOS7)【英文标题】:ExtendUITextViewheightsothatitfitsallthecontentinsideaJSONstring(iOS7)【发布时间】:2013-11-0118:13:46【问题描述】:我的CollectionViewCell中有一个UITextView,它链接到我正... 查看详情

如何从 UITextView 获取删除(退格)事件?

】如何从UITextView获取删除(退格)事件?【英文标题】:Howtogetdelete(backspace)eventfromUITextView?【发布时间】:2015-09-0103:25:51【问题描述】:我有简单的解决方案。-(BOOL)textView:(UITextView*)textViewshouldChangeTextInRange:(NSRange)rangereplacementTex... 查看详情

从 GMSMapView 中删除所有 GMSMarker?

】从GMSMapView中删除所有GMSMarker?【英文标题】:RemoveallGMSMarkerfromGMSMapView?【发布时间】:2013-12-0707:17:09【问题描述】:我在GMSMapView上放置了100个GMSMarkers。如何删除所有GMSMarkers?在适用于iOS的GoogleSdk版本1.6中。将保存GMSMarkers列... 查看详情

自 iOS 7 中的删除(退格)操作以来,我如何才能不接收 UITextView 委托消息?

】自iOS7中的删除(退格)操作以来,我如何才能不接收UITextView委托消息?【英文标题】:HowcanInottoreceiveUITextView\'sdelegatemessagesincedelete(backspace)actioniniOS7?【发布时间】:2013-11-1307:38:35【问题描述】:我使用以下委托来接收任何键... 查看详情

从应用程序 ios swift 中删除使用 UIImagePickerController 拍摄的所有本地图像和视频

】从应用程序iosswift中删除使用UIImagePickerController拍摄的所有本地图像和视频【英文标题】:DeletealllocalImagesandvideostakenusingUIImagePickerControllerfromtheappiosswift【发布时间】:2017-02-2417:24:56【问题描述】:我正在使用UIImagePickerController... 查看详情

如果从应用商店销售中删除,也从设备中删除 ios 应用

】如果从应用商店销售中删除,也从设备中删除ios应用【英文标题】:RemoveiosAppFromDevicealsoifremovedfromappstoresales【发布时间】:2020-06-3008:50:59【问题描述】:我已经准备好在AppleAppstore上销售iOS应用。现在我有另一个应用程序,我... 查看详情

iOS:从 Interface Builder 设置 UITextView 行距?

】iOS:从InterfaceBuilder设置UITextView行距?【英文标题】:iOS:setUITextViewlinespacingfromInterfaceBuilder?【发布时间】:2018-12-1404:53:15【问题描述】:在InterfaceBuilder内部,是否可以为UITextView设置段落样式属性,例如行距?【问题讨论】:... 查看详情

从项目的视图控制器中删除所有 -viewDidUnload 的方法

】从项目的视图控制器中删除所有-viewDidUnload的方法【英文标题】:Waytoremoveall-viewDidUnloadfromproject\'sviewcontrollers【发布时间】:2013-09-2802:19:54【问题描述】:正如苹果官方文档所说:-viewDidUnload在iOS6.0中已弃用。在内存不足的情... 查看详情

iOS - UITextView 中的换行符

】iOS-UITextView中的换行符【英文标题】:iOS-newlinecharacterinUITextView【发布时间】:2012-09-0715:24:44【问题描述】:从数据文件中读取文本。我怎样才能让换行符起作用?我试过\\n,但它只是将“\\n”放入字符串中,而不是创建一个... 查看详情

如何从帐户中删除 IOS 团队配置文件?

】如何从帐户中删除IOS团队配置文件?【英文标题】:HowtoremoveIOSteamprovisioningprofilefromaccount?【发布时间】:2016-05-0418:05:01【问题描述】:我在Iphone上部署了一些应用程序,现在我看到所有未使用的配置文件。如何从帐户中删除... 查看详情

从 ios 应用程序中删除结构框架

】从ios应用程序中删除结构框架【英文标题】:Removefabricframeworkfromiosapp【发布时间】:2015-09-2513:12:50【问题描述】:我从客户那里获得了一个iOS项目。主要任务是探索和查看用户界面,以便使用Xamarin从头开始​​制作多平台应... 查看详情

这是多选框和必填字段。我的意思是在我从选择框中取消选择所有值后,'aria-selected' 变得真实。

...多选框和必填字段。我的意思是在我从选择框中取消选择所有值后,\\\'aria-selected\\\'变得真实。【英文标题】:Thisismultiselectionboxandrequiredfieldaswell.Imean\'aria-selected\'isgettingtrueafteriun-selectallvaluesfromselectionbox.这是多选框和必填字段... 查看详情

如何从 Xcode 中删除多余的 iOS 模拟器条目?

】如何从Xcode中删除多余的iOS模拟器条目?【英文标题】:HowdoIremoveredundantiOSsimulatorentriesfromXcode?【发布时间】:2015-08-0623:45:06【问题描述】:如何从我的Xcode菜单中删除所有这些额外的模拟器?【问题讨论】:也许是这个?/Libra... 查看详情