小编Jor*_*n H的帖子

使用UIKeyCommand检测删除密钥

任何人都知道UIKeyCommand在iOS 7上如何检测"删除"键?

cocoa ios uikeycommand

12
推荐指数
2
解决办法
4109
查看次数

结合UISwitch和UITableViewCell进行VoiceOver交互

在日历中,当您创建新事件时,如果您点击启用了VoiceOver的全天单元格,Siri会说"全天开关按钮打开/关闭,双击以更改设置".实际上,双击将切换开关.此外,不可能只关闭切换开关本身 - 您必须与单元本身交互以切换开关,交换机本身不是可访问的元素.

在我的应用程序中,我使用标签和开关完全相同的设置.但是当我在启用VoiceOver时点击单元格时,它只读取标签,因此盲人用户不知道该单元格中有一个切换开关.如果他们点击开关本身然后他们可以与它交互,所以它与日历应用程序中的设置相反.

如何获得Apple实施的相同行为?我需要一些方法将开关组合到单元格中,以便VoiceOver在突出显示单元格时读取它们,然后当它们双击它时应该切换开关,我不确定如何完成设置.谢谢!

objective-c uitableview uiswitch ios voiceover

12
推荐指数
1
解决办法
2354
查看次数

检测主视图和详细视图控制器何时在屏幕上?

我已经UISplitViewController在Xcode 6中实现了使用通用故事板.UISplitViewController现在运行iOS 8的iPhone支持,默认情况下,一次只有一个视图控制器在屏幕上.

我需要知道主屏幕控制器和详细视图控制器何时都在屏幕上(iPad).我需要UITableViewCell在屏幕上删除公开指示符- 只有当主视图控制器在屏幕上(iPhone)时才会呈现它们,就像设置应用程序一样.

我可以简单地检测设备,只在iPhone上添加它们,但不建议这样做.新设备可能只显示一个视图控制器而不能识别为电话.另一种认为是检测,如果self.splitViewControllernil,但不会工作,因为它不会nil在iPhone也不iPad的,因为它实际上是在iPhone上的一个拆分视图控制器.

是否可以检测主屏幕控制器和详细视图控制器何时同时在屏幕上可见?

uisplitviewcontroller ios uiaccessoryview

11
推荐指数
1
解决办法
6117
查看次数

在哪里更改"已安装"以进行自动布局约束?

在故事板中使用自动布局时,可以选择是否使用"已安装"复选框来安装约束.禁用它将导致它表现得就像你没有添加该约束 - 它将没有任何效果.您可以在Interface Builder中为不同大小的类配置已安装的状态,并且可以通过将其active属性设置为true或以编程方式更改此值false.

在我的应用程序中,我希望仅在设备处于纵向时安装约束 - 旋转到横向时应该"卸载".通过取消选中为任意宽度紧凑高度安装,可以为iPhone完成此操作.(虽然这似乎不太正常,因为当它甚至不应该安装时,由于在转向横向时出现冲突的约束而破坏了这个约束,但是无论UI总是按预期出现.)但是没有办法卸载Interface Builder中的横向iPad约束(两个方向的常规宽度常规高度).

哪里是合适的地方来启用/禁用activeNSLayoutConstraint轮值设备时?在什么轮换方法将改变该状态导致所需的行为 - 只安装为肖像?如果在启动应用程序时没有调用该方法,除了旋转方法之外还应该放置哪种方法?

我已尝试将以下代码放入其中viewDidLoad,viewWillTransitionToSize但这会导致在iPad上运行时出现一些意外行为:

  • 以横向方式启动应用程序会导致约束处于活动状态,尽管事件active设置为false,它会破坏约束,并且UI不会按预期显示
  • 以纵向方式启动应用程序将活动设置为true(它已经安装在IB中),因此它按预期工作
  • 以纵向方式启动应用程序并将设备旋转到横向按预期工作 - 约束设置为非活动状态,它不会破坏约束,UI显示为预期
  • 以纵向方式启动应用程序,旋转到横向以及返回到纵向会导致UI显示正确,但它会破坏设置为活动的此约束

如果我在Interface Builder中卸载约束然后运行上面的场景我基本上会得到相反的行为.

if size.width > size.height {
    self.myConstraint.active = false
} else {
    self.myConstraint.active = true
}
Run Code Online (Sandbox Code Playgroud)

screen-rotation ios autolayout nsautolayout ios8

11
推荐指数
1
解决办法
3899
查看次数

动态增加/减少自定义UINavigationBar的高度

我按照这篇博客文章解释了如何实现UINavigationBar具有增加高度的自定义,例如,如果您想在其他条形内容下面的导航栏中添加其他ui元素,这些元素将在堆栈上的导航之间保留.在您总是希望它增加高度的情况下,此代码非常有效.

在我的应用程序中,我需要以默认高度启动导航栏,然后在用户执行给定操作后增加更多内容.与iTunes Store中的歌曲信息和控件非常相似:

在此输入图像描述

所以,如果BOOL属性是,我会做一些检查,以便不重新定位任何东西NO.当我将其设置为时YES,我调用[self setNeedsDisplay]哪个将layoutSubviews根据该布尔值调用适当的位置.sizeThatFits也叫,我返回适当的高度.

问题是,我不能叫[self setTransform:CGAffineTransformMakeTranslation(0, -(NavigationBarHeightIncrease))];initialize.相反,我在调用它的同时将布尔值更改为YES.因此,我的所有元素都会向上移动.但是如果我不打电话setTransform,导航栏中的元素位于正确的位置,但是栏本身位置太远,所以我添加到栏中的自定义视图显示在视图控制器的视图之上 -它流血了,我添加的额外空间是黑色而不是导航栏的背景颜色.

如果我打电话setTransforminitialize,当高度是默认的高度,这些元素被移动时,他们不应该.

那么,我怎样才能正确地动态改变UINavigationBar子类的高度和位置呢?

uinavigationbar ios

11
推荐指数
1
解决办法
1244
查看次数

如何删除iOS 9上的popovers背后的阴影?

在iOS 8中,弹出窗口没有阴影.现在在iOS 9中,有一个非常沉重且影响深远的阴影,在纯白色背景上看起来不太理想.如何去除阴影,而是在弹出窗口周围添加一条细细的灰色线条?或者至少减少或减轻.

这在显示操作表,使用该视图控制器.Popover UIModalPresentationStyle以及可能在其他上下文中呈现视图控制器时发生.

Popover segue: 在此输入图像描述

行动表:

UIActionSheet(title: "Title", delegate: nil, cancelButtonTitle: "Cancel", destructiveButtonTitle: "Destroy").showInView(sender as! UIView)
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

popover uipopovercontroller ios ios9

11
推荐指数
1
解决办法
4598
查看次数

如何使用NSHTMLTextDocumentType从HTML创建的NSAttributedString中删除最后一段下的填充

在创建一个NSAttributedStringHTML时,使用NSHTMLTextDocumentType,我发现\n即使在最后一段之后也会为每个段落添加一个.这是在文本的最后一段下面添加了不需要的填充UILabel.如何仅删除最后一段的额外填充?

NSString *style = @"<style> body { font-family: Avenir; font-size: 18px; color: blue; } p:last-of-type { margin: 0; }</style>";
NSString *html = @"<p>A whole bunch of sample text goes right here.</p><p>Now here's another paragraph that unfortunately has an extra line underneath the text adding undesired padding to the label. :(</p>";
NSString *styledHtml = [NSString stringWithFormat:@"%@%@", style, html];

self.label.attributedText = [[NSMutableAttributedString alloc] initWithData:[styledHtml dataUsingEncoding:NSUTF8StringEncoding] options:@{NSDocumentTypeDocumentAttribute: NSHTMLTextDocumentType} documentAttributes:nil error:nil];
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述 在此输入图像描述

nsattributedstring ios

11
推荐指数
1
解决办法
1673
查看次数

如何在iOS 13中获取状态栏的高度?

在iOS 13中UIApplication.shared.statusBarFrame.height警告

在iOS 13.0中不建议使用“ statusBarFrame”:而是使用窗口场景的statusBarManager属性。

在iOS 13中如何在不使用不推荐使用的API的情况下获取状态栏的高度?

ios ios13

11
推荐指数
6
解决办法
5029
查看次数

显示混合图层显示红色UII图像,但它没有Alpha通道

我有一个没有alpha通道的图像 - 我在Finder的"获取信息"面板中确认.然而,当我把它放在a UIImageViewUIScrollView并且我启用Show Blended Layers时,图像是红色的,这表明它正在尝试应用透明度,这将会影响性能.

如何解决这个问题是绿色的,所以iOS知道这个视图中的一切都是完全不透明的?

我尝试了以下但是没有删除红色:

self.imageView.opaque = YES;
self.scrollView.opaque = YES;
Run Code Online (Sandbox Code Playgroud)

objective-c uiscrollview uiimageview uiimage ios

10
推荐指数
1
解决办法
2655
查看次数

UIImagePickerController的cameraOverlayView在拍照后偏移

当你实现cameraOverlayViewUIImagePickerController,而你正在服用的照片出现这一观点和照片被服用后,为您提供一个机会,取消或重新拍照.我看到的问题是,如果你cameraOverlayView在照片预览区域的顶部,当你拍摄照片并显示预览时,你拍摄的照片就不再与照片对齐cameraOverlayView了.整个照片预览窗格已经移动了约50个点,同时cameraOverlayView保持原位.当您需要将照片与视图完美对齐时,这是一个问题.

如何调整它以使两者完美对齐 - 拍摄照片时以及照片拍完后?

请注意拍摄照片后如何按下整个预览区域.

在此输入图像描述

uiimagepickercontroller ios cameraoverlayview

10
推荐指数
1
解决办法
1442
查看次数