我有一个UILabel我想在顶部和底部添加空间的地方.在约束中使用最小高度我将其修改为:

编辑:要做到这一点,我用过:
override func drawTextInRect(rect: CGRect) {
var insets: UIEdgeInsets = UIEdgeInsets(top: 0.0, left: 10.0, bottom: 0.0, right: 10.0)
super.drawTextInRect(UIEdgeInsetsInsetRect(rect, insets))
}
Run Code Online (Sandbox Code Playgroud)
但我要找到一种不同的方法,因为如果我写两行以上的问题是相同的:

我知道还有其他主题,但我似乎无法找到如何实现它.
我试图将UITextField限制为只有5个字符
优选字母数字和 - 和.和_
我见过这段代码
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange,
replacementString string: String) -> Bool
{
let maxLength = 4
let currentString: NSString = textField.text
let newString: NSString =
currentString.stringByReplacingCharactersInRange(range, withString: string)
return newString.length <= maxLength
}
Run Code Online (Sandbox Code Playgroud)
和
func textField(textField: UITextField, shouldChangeCharactersInRange range: NSRange, replacementString string: String) -> Bool {
let length = count(textField.text.utf16) + count(string.utf16) - range.length
return length <= 10
}
Run Code Online (Sandbox Code Playgroud)
我只是不知道如何实际实现它或我应该换出哪个"textfield"我的自定义命名为UITextField
我想为我的所有按钮添加填充,因此我将UIButton子类化,除了其他更改之外,我还想使用setFrame方法添加固定填充.除了setFrame之外,一切正常.我查了一下,我发现如果我在该视图上取消选中"使用AutoLayout",那么我可以使用setFrame,它可以工作.有没有解决的办法?我真的想使用自动布局,因为它有助于使应用程序在iphone 5和早期设备上都看起来不错.但我也想在我的子类中使用setFrame,以使我的生活更轻松.
总结一下,我的问题是:我可以使用autolayout并以编程方式调整UIView的框架吗?
在SO上有许多很好的例子来删除UITextView的左边距.
但是,我也需要删除正确的填充.
我试过了...
[tv setContentInset: UIEdgeInsetsMake(-4,-8,-8,-X)];//where X is any integer
Run Code Online (Sandbox Code Playgroud)
几乎所有其他排列的最后两个值删除填充,似乎没有任何工作.也试过了
[tv sizeToFit];
[tv setTextAlignment:[NSTextAlignmentRight]];
Run Code Online (Sandbox Code Playgroud)
Textview中的以下文本显示"00"

我一直在尝试在SwiftUI中创建多行TextField,但是我不知道怎么做。
这是我目前拥有的代码:
struct EditorTextView : View {
@Binding var text: String
var body: some View {
TextField($text)
.lineLimit(4)
.multilineTextAlignment(.leading)
.frame(minWidth: 100, maxWidth: 200, minHeight: 100, maxHeight: .infinity, alignment: .topLeading)
}
}
#if DEBUG
let sampleText = """
Very long line 1
Very long line 2
Very long line 3
Very long line 4
"""
struct EditorTextView_Previews : PreviewProvider {
static var previews: some View {
EditorTextView(text: .constant(sampleText))
.previewLayout(.fixed(width: 200, height: 200))
}
}
#endif
Run Code Online (Sandbox Code Playgroud)
但这是输出:
我有一个显示NSAttributedString的UIView.它设置为调整大小以适应其内容.
我想在文本和视图之间创建一些填充,但它不是很有效.如果我这样做......
view.textContainerInset = UIEdgeInsetsMake(0, 15, 0, 15);
Run Code Online (Sandbox Code Playgroud)
...然后左边和右边填充,顶部和底部没有空间.这是对的.然后我添加一个顶部插图:
view.textContainerInset = UIEdgeInsetsMake(15, 15, 0, 15);
Run Code Online (Sandbox Code Playgroud)
现在顶部有15个点填充,但突然底部也有一点填充(大约10点).
如果我然后添加15点底部填充,底部变得太大,并且间距不是一直相同.相反,我必须捏造它:
view.textContainerInset = UIEdgeInsetsMake(15, 15, 5, 15);
Run Code Online (Sandbox Code Playgroud)
这是iOS 7的错误还是我误解了什么?我不喜欢在不了解正在发生的事情的情况下捏造最低价值.
在iOS 8中,我正在尝试添加UIImageView作为UITextView的子视图,类似于此处所示 - 但是图像下方的文本.

我想使用排除路径来执行此操作,因为在其他设备上,我可能会根据屏幕大小对图像进行不同的定位.
但是有一个问题,如果用于创建排除路径的CGRect的Y原点为0,并占用textView的整个宽度,则排除失败并且文本显示在排除路径中(因此文本显示在后面imageView,你可以在截图中看到).
为了测试这个,我使用"单视图"Xcode模板构建了一个简单的应用程序,具有以下内容:
- (void)viewDidLoad {
[super viewDidLoad];
// set up the textView
CGRect frame = CGRectMake(0, 0, self.view.frame.size.width, self.view.frame.size.height);
UITextView *textView = [[UITextView alloc] initWithFrame:frame];
[textView setFont:[UIFont systemFontOfSize:36.0]];
[self.view addSubview:textView];
textView.text = @"I wish this text appeared below the exclusion rect and not within it.";
// add the photo
CGFloat textViewWidth = textView.frame.size.width;
// uncomment if you want to see that the exclusion path DOES work when not taking up the full width:
// textViewWidth …Run Code Online (Sandbox Code Playgroud) MonoTouch使这些sizeWithFont方法可用UIView,但LineHeight无论字符串传递给它多长时间,它似乎都会返回字体.
string someString = "test string";
UIFont someFont = UIFont.SystemFontOfSize(13f);
SizeF sizeToDisplay = someUIView.StringSize(someString, someFont, Bounds.Width, UILineBreakMode.WordWrap);
// sizeToDisplay = { Width: 58, Height = 16 }
someString = string.Join(" ", Enumerable.Repeat(someString, 500));
sizeToDisplay = someUIView.StringSize(someString, someFont, Bounds.Width, UILineBreakMode.WordWrap);
// sizeToDisplay = { Width: 304, Height = 16 }
Run Code Online (Sandbox Code Playgroud)
是否有其他方法我应该用来找到显示任意文本块所需的高度UITextView?
ios ×6
uitextview ×3
padding ×2
autolayout ×1
c# ×1
character ×1
cocoa-touch ×1
frame ×1
ios7 ×1
iphone ×1
string ×1
swift ×1
swiftui ×1
textkit ×1
uilabel ×1
uitextfield ×1
xamarin.ios ×1