小编Ber*_*rnd的帖子

拉下时将UITableView标题视图展开到弹跳区域

我已经在标题区域中实现了MKMapView,即使您将表格向下拖动到反弹区域,我也想将它完全展开到顶部- 与Foursquare类似,请参阅示例:

Foursquare示例

我当前的默认标头实现(向下拖动时的灰色反弹区域)

默认标题

在将表格向下拖动时,如何使标题中的地图视图适应顶部的可用标题空间?

我正在使用注释中提到的UIScrollView委托,然后调整地图视图框架的大小,如下所示.

- (void)scrollViewDidScroll:(UIScrollView *)scrollView {
    CGRect frame = worldmap.frame;
    frame.size.height -= scrollView.contentOffset.y;
    worldmap.frame = frame;  
} 
Run Code Online (Sandbox Code Playgroud)

......但是它没有做出正确反应而表现不佳.如何正确设置地图框的新大小?

objective-c uitableview ios

11
推荐指数
2
解决办法
7620
查看次数

如何为i386和x86_64架构构建Cocoa Touch Framework?

在构建Cocoa Touch框架(Swift或Object-C)并将其作为"嵌入式二进制文件"添加到另一个项目后,当我尝试构建时,我收到以下错误消息

missing required architecture i386
...
ld: symbol(s) not found for architecture i386
clang: error: linker command failed with exit code 1 (use -v to see invocation)
Run Code Online (Sandbox Code Playgroud)

根据各种现有答案和扩展研究,我已经将i386添加到架构构建设置中......

在此输入图像描述

然而,这似乎没有效果.当我检查使用

lipo -info TesterFrameworkObjC
Run Code Online (Sandbox Code Playgroud)

我只能得到

Architectures in the fat file: TesterFrameworkObjC are: armv7 arm64
Run Code Online (Sandbox Code Playgroud)

...不应该在i386(和x86_64)出现在这里吗?我错过了什么?

(我正在使用Xcode 6.2 +构建iOS 8.2)


一些新的见解

使用此构建脚本的一个版本,我能够为Swift版本的框架构建缺少的体系结构.

在此输入图像描述

但是,当我将此框架添加到我的应用程序并构建时,我仍然会收到错误

Undefined symbols for architecture x86_64:
  "_OBJC_CLASS_$__TtC20TesterFrameworkSwift18TestFrameworkSwift", referenced from:
  objc-class-ref in ViewController.o
ld: symbol(s) not found for architecture x86_64
Run Code Online (Sandbox Code Playgroud)

查看模拟器的最终构建文件夹构建

Build/Products/Debug-iphoneos/TesterFrameworkSwift.framework/
Run Code Online (Sandbox Code Playgroud)

我可以看到架构仍然缺失,尽管它们是框架的一部分(如图所示).在构建应用程序时,如何确保包含框架的所有正确架构版本?


更新

看看我的所有错误消息,看起来问题实际上并没有构建错误的产品/架构,但是一步之后, …

cocoa-touch frameworks objective-c ios swift

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

将UITapGestureRecognizer添加到UITextView而不阻止textView触摸

我如何添加UITapGestureRecognizer到一个UITextView,但仍然获得了通过对这些触摸UITextView正常

目前,只要我向textView添加自定义手势,它就会阻止点击UITextView默认操作,例如定位光标.

var tapTerm:UITapGestureRecognizer = UITapGestureRecognizer()

override func viewDidLoad() {
    tapTerm = UITapGestureRecognizer(target: self, action: "tapTextView:")
    textView.addGestureRecognizer(tapTerm)
}

func tapTextView(sender:UITapGestureRecognizer) {
    println("tapped term – but blocking the tap for textView :-/")
…
}
Run Code Online (Sandbox Code Playgroud)

我如何处理点击但保持像光标定位一样的textView行为?

uitextview ios uitapgesturerecognizer swift

11
推荐指数
2
解决办法
9678
查看次数

绘制一个填充的半圆

在UIView中绘制填充(!)半圆的最佳方法是什么?我玩了CGContextAddArc函数,但它似乎没有提供填充.这是我想画的东西 - 两个填充的半圆圈.

在此输入图像描述

core-graphics uiview ios

6
推荐指数
1
解决办法
7775
查看次数

使用UIKitDynamics为Auto Layout支持的视图设置动画

我想使用UIKitDynamics UISnapBehaviour来增加按钮的动画(外观+旋转位置变化),该按钮本身位于使用自动布局的视图中.

我知道在应用UIKitDynamics力时我需要暂时禁用按钮的自动布局约束.我在考虑以下过程......

  1. 基于自动布局的转换发生之前(但在触发之后)获取按钮的目标中心/边界.保存这个价值.
  2. 暂时禁用按钮的所有自动布局/约束
  3. 申请UISnapBehaviour.使用保存的目标中心或自动布局的边界值(从步骤1开始)输入.
  4. 完成UIKitDynamics动画后,重新启用约束以准备进一步的布局更改

这是正确的方法吗?

哪些委托/布局应该用于那些相应的步骤+如何在实际基于自动布局的动画/转换发生之前从自动布局获取视图的目标中心

objective-c ios autolayout uikit-dynamics swift

6
推荐指数
1
解决办法
868
查看次数

识别本地通知设置的"未确定"案例

从iOS8开始,您需要注册并提示用户使用本地通知.因此,我想实现一种双重检查这些权限的方法.

如何检查未确定/未设置本地通知设置的情况?到目前为止,我只知道如何检查被授予拒绝的本地通知,如此...

    var currentStatus = UIApplication.sharedApplication().currentUserNotificationSettings()
    var requiredStatus:UIUserNotificationType = UIUserNotificationType.Alert

    if currentStatus.types == requiredStatus {
     … //GRANTED
     } else {
     … //DENIED
     }
Run Code Online (Sandbox Code Playgroud)

使用这个的问题是,如果到目前为止没有任何设置,我也会得到一个拒绝.如何区分所有3个案例?

  • 授予(通知,警报类型)
  • 拒绝(通知,警报类型)
  • 未定义/尚未设置(因此尚未创建本地通知应用程序设置)

作为替代解决方案,为CoreLocation的授权didChangeAuthorizationStatus提供类似的委托方法,以便对用户在权限警报上的选择作出反应将是有帮助的.是否有这样的东西,以获得用户与本地通知的隐私警报交互的状态?

privacy ios uilocalnotification swift

6
推荐指数
1
解决办法
510
查看次数

从Swift中的蓝牙读取中提取并转换NSData值

我试图从iOS上的蓝牙4.0 LE尺度读取值.如何将作为NSData接收的蓝牙特性测量值转换为专用的Swift对象?

作为一个规范我知道......

位0到位12 →重量(0到5000 g)

位15 →正/负权重值

func peripheral(peripheral: CBPeripheral!, didUpdateValueForCharacteristic characteristic: CBCharacteristic!, error: NSError!) {

    let value:NSData = characteristic.value

    let weight:Double = … ?
    let negative:Bool = … ?
Run Code Online (Sandbox Code Playgroud)

还有一条信息 - 看着

value.length
Run Code Online (Sandbox Code Playgroud)

看起来我总是从设备获得1或2个字节(?)的数据.但是我仍然不确定如何提取我想要的数据/值.我很感激任何建议.

到目前为止,这是有效 ...

    var bin16:UInt16 = 0
    characteristic.value.getBytes(&bin16, range: NSRange(location: 0,length: 1))

    println("Bytes \(characteristic.value.bytes) Length \(characteristic.value.length)")
    println("Value \(bin16)")
Run Code Online (Sandbox Code Playgroud)

- 这样做我设法得到一些体重读数.除非值大于255或负值,否则它似乎有效.这里有些例子:

75克

字节0x1655e458长度1值75

367克

字节0x1765cbc8长度2值161

-6克

字节数0x17670f18长度2值32

而且这种情况在两者之间更频繁地传播 - 在这种情况下它不代表160克.也许是某种错误代码?!

字节数0x146528b8长度2值160

bluetooth nsdata ios core-bluetooth swift

5
推荐指数
2
解决办法
7391
查看次数

从Swift中的NSMutableArray中有选择地删除和删除对象

基本问题.在Swift中有选择地从可变数组中删除和删除项目的最佳方法是什么?

有些选项似乎不适合这样,比如在一个内部调用removeObject

  • for in循环
  • 枚举块

和其他似乎一般工作的人一样

  • for循环使用索引+调用removeObjectAtIndex,甚至在循环内部
  • for for循环用于填充arrayWithItemsToRemove然后使用originalArray.removeObjectsInArray(arrayWithItemsToRemove)
  • 使用.filter创建一个新数组似乎真的很好,但我不太确定我对更换整个原始数组的感觉

是否有推荐的,简单而安全的方法从阵列中删除项目?其中一个我提到的或我失踪的东西?

获得不同的(有利有弊)或偏好是很好的.我仍然在努力选择合适的人选.

nsmutablearray swift

5
推荐指数
2
解决办法
8045
查看次数

如何创建和使用iOS Framework与Extensions共享代码

自定义iOS框架的最小设置和使用情况如何?我开始研究这个,以便与今日扩展共享代码.

这是我到目前为止所做的

  1. 添加了一个新的Target选择Cocoa Touch Framework模板并将其命名为TesterKit
  2. 在框架内部,我创建了一个新类TestClass.swift
  3. TestClass.swift里面我创建了一个简单的类方法类基金测试器()打印一个字符串进行测试

看看我的应用程序,我可以看到TesterKit已添加为嵌入式二进制文件链接框架和库,但它是红色的

  1. 为了在应用程序中使用这个新框架,我将导入TesterKit添加到AppDelegate的顶部
  2. 然后我尝试使用TestClass.tester()从Framework中调用类方法.但是,我没有显示日志消息,而是...

    "使用未解析的标识符"

→我做错了什么?这里有任何错误的假设吗?

注意:我已经观看了WWDC会议416"构建现代框架"并找到了框架程序设计指南.如果有任何示例项目显示如何使用这样的新自定义iOS框架,理想情况下使用Swift +将其与Today Extensions集成,这可能也会有所帮助.

xcode ios swift ios8 ios-app-extension

5
推荐指数
1
解决办法
2494
查看次数

如何在XCTest中工作的FileManager中生成可写路径

我正在编写一个涉及将文件写入磁盘的XCTest.我正在使用AppGroup来定义文件路径.这在设备或模拟器上运行良好.

class func filePath()->URL {
    guard let path = FileManager.default.containerURL(forSecurityApplicationGroupIdentifier: "my.app.group.id") else {
        fatalError("No File Path")
    }
    let filePath = path.appendingPathComponent("filename.json")
    return filePath
}
Run Code Online (Sandbox Code Playgroud)

...但是containerURL在XCTest环境中不返回任何内容.测试崩溃了.

如何生成适用于单元测试的临时路径?

unit-testing nsfilemanager xctest swift ios-app-group

5
推荐指数
1
解决办法
242
查看次数