- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在创建一个简单的“工具提示”子类,它是一个圆角矩形和一个将“ anchor 定”到另一个 View 的小三角形。
我创建了一个 UILabel 子类,并覆盖了“drawRect”以缩小主标签区域并绘制一个三角形。
'roundRect' 表示应包含全文的圆角矩形部分。
这一切都很好,只是我无法在“roundRect”中显示全文。似乎文本没有出现在最后一行(即三角形现在所在的位置)。
需要注意的另一件事是,我正在使用自动布局并设置了“工具提示标签”的约束以根据需要填充屏幕。这按预期工作,因为减少/添加更多文本会显示适当大小的工具提示。但似乎我需要以某种方式通知“工具提示”或“自动布局”,文本应该适合“工具提示标签”的“roundRect”部分。
屏幕截图 #1 使用此“drawTextInRect”方法,您可以看到正在显示全文,但与“三角形”区域重叠(而且它没有插入,这不是所需的外观):
override public func drawTextInRect(rect: CGRect) {
super.drawTextInRect(rect)
// super.drawTextInRect(UIEdgeInsetsInsetRect(rect, UIEdgeInsets(top: 10, left: 10, bottom: 10, right: 10)))
}
override public func drawTextInRect(rect: CGRect) {
// super.drawTextInRect(rect)
super.drawTextInRect(UIEdgeInsetsInsetRect(self.roundRect, UIEdgeInsets(top: 10, left: 10, bottom: 10+self.triangleHeight, right: 10)))
}
override public func drawRect(rect: CGRect) {
self.roundRect = CGRect(x: rect.minX, y: rect.minY, width: rect.width, height: rect.height-self.triangleHeight)
self.triangleBezier.moveToPoint(CGPoint(x: self.roundRect.midX-self.triangleWidth/2, y: self.roundRect.maxY))
self.triangleBezier.addLineToPoint(CGPoint(x: rect.midX, y: rect.maxY))
self.triangleBezier.addLineToPoint(CGPoint(x: self.roundRect.midX+self.triangleWidth/2, y: self.roundRect.maxY))
self.triangleBezier.closePath()
self.roundRectBezier = UIBezierPath(roundedRect: self.roundRect, cornerRadius: 5.0)
self.roundRectBezier.appendPath(self.triangleBezier)
self.tooltipColor.setFill()
self.roundRectBezier.fill()
super.drawRect(rect)
}
最佳答案
我实际上不会为此将 UILabel 子类化,而是制作自己的工具提示类,由外部 View 和具有自动布局约束的内部标签组成。内部标签决定了 View 的整个高度。
像这样带有适当圆角/三角形的东西:
或者,如果要分配填充,请改用 UITextView:Adding space/padding to a UILabel
关于autolayout - UILabel 子类 - 自定义 'drawRect' 方法导致文本被截断/不显示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36108557/
在 iOS Autolayout 中,我应该添加什么约束来设置与 Superview(在我的例子中是 UIViewController 的 View )成比例的宽度和高度,使用 Autoresizin
我有一个主屏幕,三个按钮垂直对齐。我想在 4"屏幕上采用我的应用程序。所以我想平均调整按钮之间的空间以填满屏幕。看下面的图片:我怎样才能使用 AutoLayout 完成它? 绿色区域保持其大小。 最佳
我在窗口中有一个 View , View 的位置和大小是通过自动布局计算的。该 View 有一个 subview ,一个可拖动的 NSView 子类。通过覆盖 -mouseDown: 和 -mouse
在 Interface builder 中,size classes 的强大功能让您可以安装或卸载约束。在代码中,您可以通过切换 active 属性来做类似的事情。 Interface Builder
我一直在开发具有相当复杂的包含 View Controller 层次结构的企业 iPad 客户端应用程序。我最近不得不在应用程序启动 View (服务器登录 View )中重新设计。我决定借此机会使用
环境: iOS 6/7、Xcode 5 中的自动布局。 我知道要调整 NavBar 以适应状态栏,我将 NavBar 的背景图像设置为 64 位高(引用:WWDC 2013 Video Lecture
我正在尝试创建一个包含一些垂直放置的按钮的 View ,并且我希望在调整窗口大小时按钮之间的间距相等。该 View 的约束(使用视觉格式)是: H:|-0-[button1]-0-| H:|-0-[b
最近在 Xcode 5 中切换到自动布局(并且观看了 WWDC 13 的开发人员视频),我发现除了基于 View 的 NSOutlineView 之外,其他东西都可以很好地工作。 在自动布局之前,这是
这个问题已经有答案了: Seeing black bars at the top and bottom of the iPhone X Simulator (11 个回答) 已关闭 6 年前。 今天,
对于iPhone 6+的风景和肖像,我有不同的尺寸等级。如果我从横向或纵向开始运行,则不会出现任何约束错误。当我从横向或纵向切换时,会遇到约束错误。看来,如果我切换,则会同时获得纵向和横向尺寸类别约束
我遇到了 AutoLayout 的问题,这让我非常头疼。我使用 Autolayout 在 .xib 中设置了 ScrollView 和容器 View 。我需要动态地将 subview 添加到容器 Vi
我正在构建一个通用的工作流客户端应用程序,它应该使用来自多个源的工作流任务,甚至可以在理想情况下稍后添加,而无需更改应用程序代码。这个想法是应用程序将适应数据结构、类型、UI 和操作元素,理想情况下还
我得到了通常的 Unable to simultaneously satisfy constraints. Probably at least one of the constraints in th
我有以下代码,当我的应用程序出现问题时,会显示包含不同消息的警报。该代码多年来一直运行良好,并且存在于我在 App Store 上的大多数应用程序中。 我正在制作一个新应用程序,只是添加了此代码,但是
我在 UIStoryboard 中添加一个 UIView 并将其绑定(bind)到一个名为 testView 的自定义 UIView 类,接下来,我创建一个 UIView 在 require init
该应用程序允许用户发布图像/关注其他人等。 所以它工作正常,但我收到以下警告:(我知道有些与自动布局约束有关,但我如何知道哪个导致了问题?) 2015-07-05 17:19:37.701 Pixym
假设我有一个包含两列对象的 View 。第一列包含标签,第二列包含 slider 。我希望 slider 全部向左对齐。我希望所有标签都相互对齐。诀窍是,如何设置标签和 slider 之间的间距,以便
我有一个 View ,我在自动布局上设置了这个 View 。当我在 4s iphone 中更改按钮框架/位置时,我无法更改它。如何更改ios 4s中的按钮位置注意不更改自动版式属性? 这是我的代码:
我正在尝试为 iPad 和 iPhone 构建一个包含大约 10 个不同文本字段、开关和标签的表单。在这样做时,我想将 AutoLayout 与 UIScrollView 一起使用,以便它可以在 iP
我将尝试描述这个问题——以前从未见过这种行为。 当应用程序在模拟器或实际设备上启动时,我有一个按钮从应用程序屏幕的右侧移动到中间。我希望它始终位于中间(移动到的位置)。 基本上,它从父 View 上的
我是一名优秀的程序员,十分优秀!