如何使用自动布局在 MKAnnotation 中显示多行?

2023-11-22

enter image description here

我正在使用 Mapkit 如何多行输入MK注释视图.

每个注释都有标题和副标题。 我如何在以下的帮助下显示多行副标题自动布局 ?

我找到了答案。请尝试我的答案。我们只需要编写代码

- (MKAnnotationView *)mapView:(MKMapView *)mapView viewForAnnotation:(id <MKAnnotation>)annotation
{   

}

在这里,我展示了如何将自动布局与 MKAnnotation 结合使用的想法。


借助自动布局,我们可以在 MKAnnotation 视图中显示多行

这很简单。

in 目标c

 - (MKAnnotationView *) mapView:(MKMapView *)mapView viewForAnnotation:(id<MKAnnotation>)annotation {

        if ([annotation isKindOfClass:[MKUserLocation class]])
            return nil;
        if ([annotation isKindOfClass:[CustomAnnotation class]]) {
            CustomAnnotation *customAnnotation = (CustomAnnotation *) annotation;

            MKAnnotationView *annotationView = [mapView dequeueReusableAnnotationViewWithIdentifier:@"CustomAnnotation"];

            if (annotationView == nil)
                annotationView = customAnnotation.annotationView;
            else
                annotationView.annotation = annotation;

            //Adding multiline subtitle code 

            UILabel *subTitlelbl = [[UILabel alloc]init];
            subTitlelbl.text = @"sri ganganagar this is my home twon.sri ganganagar this is my home twon.sri ganganagar this is my home twon.  ";

            annotationView.detailCalloutAccessoryView = subTitlelbl;

            NSLayoutConstraint *width = [NSLayoutConstraint constraintWithItem:subTitlelbl attribute:NSLayoutAttributeWidth relatedBy:NSLayoutRelationLessThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:150];

             NSLayoutConstraint *height = [NSLayoutConstraint constraintWithItem:subTitlelbl attribute:NSLayoutAttributeHeight relatedBy:NSLayoutRelationGreaterThanOrEqual toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1 constant:0];
            [subTitlelbl setNumberOfLines:0];
            [subTitlelbl addConstraint:width];
            [subTitlelbl addConstraint:height];




            return annotationView;
        } else
            return nil;
    }

output

enter image description here

对于斯威夫特

func mapView(mapView: MKMapView, viewForAnnotation annotation: MKAnnotation) -> MKAnnotationView? {

        let identifier = "MyPin"

        if annotation.isKindOfClass(MKUserLocation) {
            return nil
        }

        var annotationView: MKPinAnnotationView? = mapView.dequeueReusableAnnotationViewWithIdentifier(identifier) as? MKPinAnnotationView

        if annotationView == nil {

            annotationView = MKPinAnnotationView(annotation: annotation, reuseIdentifier: identifier)
            annotationView?.canShowCallout = true

              let label1 = UILabel(frame: CGRectMake(0, 0, 200, 21))
            label1.text = "Some text1 some text2 some text2 some text2 some text2 some text2 some text2"
             label1.numberOfLines = 0
              annotationView!.detailCalloutAccessoryView = label1;

            let width = NSLayoutConstraint(item: label1, attribute: NSLayoutAttribute.Width, relatedBy: NSLayoutRelation.LessThanOrEqual, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 200)
            label1.addConstraint(width)


            let height = NSLayoutConstraint(item: label1, attribute: NSLayoutAttribute.Height, relatedBy: NSLayoutRelation.Equal, toItem: nil, attribute: NSLayoutAttribute.NotAnAttribute, multiplier: 1, constant: 90)
            label1.addConstraint(height)



        } else {
            annotationView!.annotation = annotation
        }
        return annotationView
    }


}

enter image description here

我在这里使用NSLayoutConstraint

我以编程方式创建一个标签。在其上添加约束,然后在MKAnnotationView的detailCalloutAccessoryView中添加标签。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用自动布局在 MKAnnotation 中显示多行? 的相关文章

  • Parse.com - 获取 [PFUser currentUser] 中包含的指针数据

    我正在使用 Parse com iOS SDK 并且我不知道需要调用什么方法来确保 PFUser currentUser 包含其中包含的每个指针的数据 这可能很简单 但是 作为这个平台的初学者 我找不到解决方案 只是为了澄清一下 我试图在下
  • 在 viewWillAppear( ) 中获取空值,但在 viewDidLoad( ) 中获取有效值

    When print mess 被称为来自viewDidLoad函数 它打印预期的内容 但是当从viewWillAppear函数 它给出空输出 完成分配后标签也没有更新viewDidLoad 为什么是这样 主视图控制器 if segue i
  • CocoaPods 生成无效的项目文件(未找到标头)

    我有一个带有 Podfile 的项目文件 如下所示 platform ios 7 0 def import pods pod Specta 0 1 8 pod Expecta 0 2 1 pod RestKit 0 20 3 pod Mag
  • 是否可以使用 iOS SDK 更改 Amazon Cognito 中的用户名?

    正如标题中所写 是否可以更改 Amazon Cognito 用户的用户名 我在文档中找不到任何内容 可以更新preferred username使用 iOS SDK 的 Cognito 用户 使用updateAttributesAPI 调用
  • UIWebView 未正确加载 JavaScript - 嵌入式 Facebook 帖子

    Facebook 有一项新功能 允许用户将公共帖子嵌入网页中 我想尝试在 UIWebView 内的 iPhone 应用程序中使用它 转义必要的代码非常简单 但即使我手动转义代码 Web 视图也不会正确加载帖子 JavaScript 根本不起
  • 将第 3 方库添加到 iPhone 应用程序时如何设置“标题搜索路径”的路径

    我想添加第 3 方库语音转文本 https github com todoroo iPhone Speech To Textto my Xcode项目 我只是拖xcodeproj文件在我的 iPhone 项目中 然后我按照目标依赖项 将二进
  • 防止 UITableView 滚动到某个点以下

    如何让 UITableView 允许在某个索引行上方滚动 但在低于某个点时阻止滚动 例如 如果我有第 1 行到第 100 行 其中在给定时间视图中仅出现 5 行 我希望允许用户在第 1 50 行之间滚动 但在第 50 行可见时阻止进一步向下
  • NSPredicate 使用 RLMResults 作为参数

    我试图通过使用 NSPredicate 进行过滤来获取两组 Realm 数据 并且是不同的对象 之间的差异 但存在一个我无法理解的错误 我的代码 RLMResults topStories KFXTopStory allObjects NS
  • 以编程方式添加带有自动布局的 UISLider

    我正在尝试以编程方式将 UISlider 添加到我的视图中 包括约束 以便其宽度适应整个屏幕宽度 这是我到目前为止得到的 2 Add UISlider self slider UISlider alloc init self view ad
  • 如何相对于包含视图大小定位子视图?

    我希望能够将我的子视图从顶部定位到超级视图大小的 25 NSLayoutConstraint topPositionConstraint NSLayoutConstraint constraintWithItem containerView
  • 在 macOS 10.14 上键入文本时,NSTextView 光标不出现

    我在 macOS 10 12 Mojave 上使用 NSTextView 观察到一个奇怪的问题 我正在更改 textStorage 属性didChangeText 像这样 self textStorage beginEditing ARTo
  • Swift 中不再有“private init”?

    我看到很多关于使用的参考private init在 Swift 中限制对象构造 例如this http krakendev io blog the right way to write a singleton 但当我尝试时 在 Xcode
  • iOS 中的词干 - 不适用于单个单词

    我在用NSLinguisticTagger用于词干提取 我能够获得句子中单词的词干 但无法获得单个单词的词干 以下是我正在使用的代码 NSString stmnt i waited NSLinguisticTaggerOptions opt
  • iPhone 上的锁定方向 UIWebView

    有没有办法锁定 UIWebView 的方向 使用 Obj C JS 还是 Html 我不想有按钮或任何东西 我只想在应用程序打开时将其锁定为纵向 好像这个堆栈溢出帖子 https stackoverflow com questions 43
  • iOS SDK:MapKit MKPolyLine 未显示

    我试图在地图上显示多段线 但该线没有显示 我尝试了很多事情 但注意到似乎有用 我检查了核心数据函数 它正在返回数据 所以这不是问题 它必须是我在地图点创建或地图上绘制的某个地方 我猜 我确信一定是某个地方出了点小错误 但我找不到它 My c
  • Sprite-kit:沿圆形路径移动元素

    我正在尝试让一个元素沿着圆圈的边缘移动 我在屏幕中间创建并放置了一个圆圈 var base SKShapeNode circleOfRadius 200 Size of Circle base position CGPointMake fr
  • UITableViewController 无法识别的选择器发送到实例

    当我传递一个整数时 我有一个 tableviewcontroller 和一个detailtableviewcontroller UITableViewController setSurveyNumber 无法识别的选择器发送到实例 Biza
  • HTML5 地理定位 - 在 iOS 上无法始终工作

    目前正在使用 HTML5 地理定位 我已经在所有网络浏览器上测试了它 它似乎工作正常 然而 当我在 iPad 上测试地理定位时 它在 iPad mini 上始终有效 但当我将其放在更大的 iPad iPad 2 上时 位置似乎并不总是有效
  • NSUserDefaults、Settings.bundle 和应用程序组

    我有一个有 2 个目标的应用程序 主应用程序和 Today 扩展 为了在这些目标之间共享设置 我打开了应用程序组功能 添加了一个组group myApp com然后使用NSUserDefaults在主应用程序和今日扩展中都是如此 var d
  • 小部件配置在 macOS 上不起作用

    我为我的 iOS 应用程序制作了一个小部件 效果很好 现在我正在将其移植到我的 macOS 应用程序中 但不知何故 小部件配置不起作用 这些项目已显示 但我无法以某种方式选择它们 查看屏幕截图 但请看一下我制作的视频 https youtu

随机推荐

  • 如果有空格,为什么现代浏览器仍然在内联块之间放置空格

    如果您有这样的标记 div class inlineblock one div div class inlineblock two div div class inlineblock three div 和CSS像这样 inlinebloc
  • Jetty 9.0 嵌入和 RestEasy 3.0 不断抛出 NoSuchMethodError

    今天 我想到构建一个非常简单的 Web 应用程序 该应用程序由 REST 后端提供支持 因为我想要一个非常轻量级的服务器 所以我开始考虑 Jetty 由于我想尝试 Jersey 之外的另一种 JAX RS 实现 所以我查看了 RestEas
  • 在 flutter 插件中获取 Activity 参考

    当我创建flutter插件时 插件类中默认有两个方法 override fun onAttachedToEngine flutterPluginBinding FlutterPlugin FlutterPluginBinding and f
  • 在python中逐行复制文件

    我正在编写一个 python 程序来将文件逐行复制到新文件中 我的代码如下 其中我使用循环逐行复制文件 然而 由于文件中的行数可能会改变 有没有一种方法可以在 python 中逐行复制文件 而不使用依赖于数字的循环 而是依赖于 EOF 字符
  • WPF 中的多种变换效果

    我需要在 WPF 中通过 C 应用多重变换效果 我尝试了下面的代码 但我只看到最后一个效果 而不是两者一起 如果可以的话有什么线索吗 XAML
  • android 解析 .local (mDNS)

    我正在寻找一种使用 Android 4 0 4 解析 local 主机名的解决方案 由于 API 级别 15 没有 NSD 在设备上 我没有任何服务可供发现 只有主机名 您能提供一个如何解决的例子吗 我集成了 jmDNS 但不知道如何用于主
  • 如何将类数组应用于classList.contains?

    在我的 HTML 中 我有一个div像这样 div class a b c div 在我的 JavaScript 中 我有一系列我感兴趣的类 var goodClasses a c 在好的浏览器中 我可以使用很棒的classList功能来测
  • 在 FastAPI 中使用 `async def` 与 `def` 并测试阻塞调用 [重复]

    这个问题在这里已经有答案了 tl dr 以下哪个选项是正确的工作流程fastapi 如何以编程方式测试调用是否真正被阻止 而不是从浏览器手动测试 有没有压力测试延伸至uvicorn or fastapi 我有多个端点fastapi服务器 使
  • 使用 Python 2.7.x 连接到 Google Analytics 时出现 403 错误

    我尝试使用 Python 客户端 google api python client 从 Google Analytics API 获取数据 这是我使用的代码 from apiclient import discovery from oaut
  • jquery ui autocomplete _renderItem 似乎干扰 select 事件

    如果我使用 renderItem 我的选择事件将不起作用 如果我注释掉调用 renderItem 的最后一个代码块 则 select 事件将起作用 当我使用 renderItem 时 选择事件根本不会触发 var cache lastXhr
  • 删除一个数组中位于另一个数组中的项目

    我被我的剧本困住了 我需要比较两个数组 一个是查询的结果 另一个是文件的内容 Array1 Invoke Sqlcmd Query select name from person Array2 Get Content Myfile txt
  • 从“对等方重置连接”中恢复 Indy TCP 客户端

    在这种情况下我应该如何恢复 服务器崩溃 连接异常关闭 对几乎所有内容的调用都会导致 对等方重置连接 异常 我似乎已经通过在 except 块内的 TIdTCPClient 对象上调用 Disconnect 来修复它 但它会导致一个带有相同消
  • 如何检查辅助服务是否崩溃(Android Pie 现在在设置中显示此信息)?

    我现在发现安卓9了如果辅助功能服务停止工作 则显示信息 对于尝试利用辅助功能 API 的开发人员来说 这始终是一个痛苦 辅助功能看起来已启用 但服务已停止 为了让它恢复工作 需要关闭然后重新打开辅助功能 如果谷歌完全修复了这个问题 我会很高
  • AVRO 中的数据验证

    我是 AVRO 新手 如果这是一个简单的问题 请原谅 我有一个使用 AVRO 模式进行记录调用的用例 假设我有 avro 架构 name abc namepsace xyz type record fields name CustId ty
  • 既然他们停止为 Eclipse 开发 derby 插件,是否可以在 Eclipse 中使用 apache 的 derby ?

    我想使用 apache 中的 Derby 以便在我当前正在开发的桌面应用程序上包含数据库管理 不幸的是 我发现他们已经停止开发这个插件 并且我在网上阅读的所有教程都引用了这个插件 所以我的问题是 如何在 eclipse 上使用最新版本的 D
  • Jenkinsfile 中的故障后块不起作用

    我正在尝试使用并行步骤进行失败后操作 但它永远不会起作用 这是我的 Jenkins 文件 pipeline agent any stages stage test steps withMaven maven maven3 Maven ins
  • 如何在 LLDB 断点条件下使用堆栈内容?

    问题 我遇到过这样一种情况 我们在启动期间进行媒体播放 并且 objc exception throw 在此期间点击了大约 5 次 但总是被捕获 并且它是way媒体播放器对象的南边 我厌倦了 a 必须手动继续 n 次 或 b 必须禁用断点直
  • 将 Textview 添加到 FrameLayout 的确定位置

    我正在尝试添加一个textView to a frameLayout The TextView has wrap content属性 因此它会随着文本的增长而增长 我将其添加到FrameLayout有了这个功能 FrameLayout fi
  • Java中从磁盘备份和恢复sqlite到内存

    我正在尝试将 sqlite 文件读入内存以获得更好的性能 当关闭我的应用程序时 我想将其写回硬盘 我正在使用jdbc 3 7 2 Java 驱动程序 根据文档 我的代码看起来像 this conn DriverManager getConn
  • 如何使用自动布局在 MKAnnotation 中显示多行?

    我正在使用 Mapkit 如何多行输入MK注释视图 每个注释都有标题和副标题 我如何在以下的帮助下显示多行副标题自动布局 我找到了答案 请尝试我的答案 我们只需要编写代码 MKAnnotationView mapView MKMapView