小编use*_*435的帖子

使用现有静态库和iOS应用程序配置Cocoapods

我无法使用Cocoapods正确编译我的工作区.工作区中有3个项目,每个项目都有自己的目标:

  1. libPods - 具有所有外部依赖关系的Cocoapods静态库
  2. libCommon - 我的静态库,我保存所有共享代码(基本控制器,网络代码,通用UI等)
  3. myApp - 我的iOS应用程序

libCommon和myApp都需要libPods的外部依赖项.最初我认为它会像这样工作:

  1. libPods构建
  2. libCommon链接libPods和构建
  3. myApp链接libCommon并构建

在这种情况下,libCommon"拥有"pod,然后myApp只链接libCommon,就像我一直在做Cocoapods之前...但显然静态库不喜欢与静态库链接(我得到了一堆动态库错误).我在某个地方阅读github问题,而不是我应该构建libPods和libCommon,然后myApp应该链接到两个库.现在我的podfile看起来像这样:

workspace 'MyApp.xcworkspace'
platform :ios, '5.0'

link_with ['Common', 'MyApp']

target 'MyApp' do
  xcodeproj 'MyApp.xcodeproj'

  pod 'AFNetworking',               '1.1.0'
  pod 'TTTAttributedLabel',         '1.6.0'
  pod 'JSONKit',                    '1.5pre'
  pod 'Reachability',               '3.1.0'
end
Run Code Online (Sandbox Code Playgroud)

通过此设置,myApp拥有所有pod,然后在libCommon构建设置中指定pod标头的路径.这构建正常,直到我尝试使用libCommon中的一个类.一旦我这样做,我得到其中一个_OBJC_CLASS_$_Blah错误(告诉我虽然标题可用,但它仍然没有正确链接).当我尝试在"Build Phases"中手动链接libCommon时,我得到了一堆重复的符号错误(让我相信它已经链接了?).有没有搞错?

有什么方法可以正确地做到这一点,我的podfile应该是什么样子?

xcode static-libraries ios cocoapods

26
推荐指数
2
解决办法
7924
查看次数

处理嵌套UIScrollViews向同一方向滚动的触摸

我有两个嵌套的UIScrollViews,都在垂直方向滚动.在允许内部scrollview滚动之前,我需要外部scrollview首先滚动到它的最大范围.在外部scrollview达到其最大范围之前,内部scrollview不应该是可滚动的.这是一个例子: 嵌套的Scrollviews图

在左图中,内部的垂直拖动Scrollview B应该移动Scrollview A,Scrollview B不应该是可滚动的(但它仍然需要能够接收触摸/点击).一旦Scrollview A达到它的最大范围(当Scrollview B到达屏幕顶部时),Scrollview B则应滚动.这需要一个连续的动作.

我试图从' 委托方法切换ScrollView B' ,但这似乎不是一个可行的解决方案,因为它不能在一个连续的动作中工作(例如:用户需要在到达顶部后再次释放和触摸屏幕).scrollEnabledScrollView AscrollViewDidScroll:Scrollview B

实现这一点的最佳方法是什么才能在一个连续的运动中起作用?

iphone scroll uitableview uiscrollview ios

26
推荐指数
3
解决办法
7475
查看次数

确定多个Android屏幕尺寸/密度的图像大小

我一直在审查Android上的Supporting Multiple Screens文档,我只需要一些额外的说明......

我的理解是,设计三个独特的接口(ldpi,mdpi和hdpi)将是以最小的缩放/失真支持所有潜在的Android屏幕的最佳方式.

是的,我知道发布了类似的问题,但是......如果我为基准mdpi创建一个图像(假设我的图像是300x210,仅作为示例)如何确定在ldpi重新创建该图像所需的大小&hdpi?这篇文章以及谷歌搜索让我相信ldpi只是mdpi图像的75%,而hdpi是mdpi图像的150%.这准确吗?

android resolution interface

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

为什么我的WatchKit扩展程序中的应用程序组不起作用?

我已经看过关于在主机应用和应用扩展之间共享NSUserDefaults数据的所有其他帖子,但我仍然无法工作.以下是我所做的一切:

  1. 在Xcode的"功能"选项卡上为扩展和主机应用启用应用组.
  2. 将组名设置为"group.com.mycompany.foo",并确认扩展名和主机应用程序已添加到组中.
  3. 已确认两者都存在权利文件,并且"com.apple.security.application-groups"键设置为我的应用程序组名称.(对于它的价值,我也使用扩展和主机应用程序之间的共享钥匙串功能,这是有效的 - 所以我不认为这是权利问题)
  4. 重新生成所有配置文件.事实上,我甚至撤销了所有证书,并在设置应用程序组后重新生成了所有配置文件.

毕竟,这段代码仍然不起作用:

// in the host app
NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"];
[testDefaults setObject:@"TEST" forKey:@"foo"];
[testDefaults synchronize];
Run Code Online (Sandbox Code Playgroud)

然后:

// in the extension
NSUserDefaults *testDefaults = [[NSUserDefaults alloc] initWithSuiteName:@"group.com.mycompany.foo"];
NSLog(@"%@", [testDefaults objectForKey:@"foo"]);
Run Code Online (Sandbox Code Playgroud)

这导致:

(null)
Run Code Online (Sandbox Code Playgroud)

当我查看Xcode首选项时,我注意到这些图标,其中没有一个具有"App Group"图标: Xcode首选项 - 权利

但正如我之前所说,我在设置应用程序组后清除了我的钥匙串,证书和配置文件.因此,如果这实际上是问题,我如何将权利添加到配置文件?

我错过了什么?我是新鲜的想法.

救命?

编辑:访问组正在我的今日和Safari扩展中工作,而不是在WatchKit扩展中.我不知道为什么,并且所有构建设置似乎都以相同的方式配置.

编辑2:对于那些坚持我的功能设置不正确的人,这里有一个截图:功能

nsuserdefaults ios ios-app-extension ios-app-group watchkit

18
推荐指数
1
解决办法
6197
查看次数

使用Gson和Retrofit 2反序列化复杂的API响应

我正在使用Retrofit 2和Gson,我无法从我的API反序列化响应.这是我的情景:

我有一个名为模型对象Employee,它有三个字段:id,name,age.

我有一个返回如下单个Employee对象的API :

{
    "status": "success",
    "code": 200,
    "data": {
        "id": "123",
        "id_to_name": {
            "123" : "John Doe"
        },
        "id_to_age": {
            "123" : 30
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

以及Employee像这样的对象列表:

{
    "status": "success",
    "code": 200,
    "data": [
        {
            "id": "123",
            "id_to_name": {
                "123" : "John Doe"
            },
            "id_to_age": {
                "123" : 30
            }
        },
        {
            "id": "456",
            "id_to_name": {
                "456" : "Jane Smith"
            },
            "id_to_age": {
                "456" : …
Run Code Online (Sandbox Code Playgroud)

android gson deserialization retrofit

13
推荐指数
2
解决办法
2万
查看次数

在地图视图的可见rect中显示MKMapViewAnnotations

我在Path风格的视差表视图标题中显示MKMapView.要创建效果,mapView边界大于用户可见的区域.我需要设置地图视图区域,以便所有地图的注释都包含在MKMapView的可见矩形中.最好的方法是什么?

MKMapView具有有限的可见区域

为清晰起见编辑:这是一个用例.mapView大小为320 x 380.但是,可见区域由rect(0.0,20.0,320.0,100.0)定义.我需要设置区域,以便所有注释都出现在mapView中的此rect中.

map mapkit mkmapview mkannotation ios

9
推荐指数
2
解决办法
8131
查看次数

SDK中是否包含iPad"翻页"转换?

我可以使用iPad SDK中是否包含"翻页"转换?或者是全部用核心图形手工编码?

iphone transition ipad ios

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

为什么捆绑器不会在OS X 10.8上安装json 1.7.4 gem?

我在OS X 10.8上使用XCode 4.4,Ruby 1.9.3和Rails 3.2.

当我从git克隆我的rails项目并运行时:

bundle install
Run Code Online (Sandbox Code Playgroud)

我明白了:

安装json(1.7.4)Errno :: EPERM:不允许操作 - /Users/myuser/.rvm/gems/ruby-1.9.3-p0/gems/json-1.7.4/.gitignore安装json时出错(1.7.4),而Bundler无法继续.gem install json -v '1.7.4'在捆绑之前确保成功.

然后我尝试:

gem install json -v '1.7.4'
Run Code Online (Sandbox Code Playgroud)

得到:

错误:执行gem时...(Errno :: EPERM)不允许操作 - /Users/scalessec/.rvm/gems/ruby-1.9.3-p0/gems/json-1.7.4/.gitignore

好的.权限问题,对吧?我们试试吧:

sudo gem install json -v '1.7.4'
Run Code Online (Sandbox Code Playgroud)

不行.这是我得到的:

构建原生扩展.这可能需要一段时间...错误:安装json时出错:错误:无法构建gem原生扩展.

/Users/myuser/.rvm/rubies/ruby-1.9.3-p0/bin/ruby extconf.rb创建Makefile

make compiling generator.c make:/usr/bin/gcc-4.2:Permission denied make:* [generator.o]错误1

有没有搞错?

gem json makefile ruby-on-rails bundler

8
推荐指数
1
解决办法
5619
查看次数

如何在PHP中保护硬编码的登录名/密码?

我正在编写一个简单的PHP脚本来访问Foursquare API.PHP将始终访问相同的Foursquare帐户.暂时,我在我的脚本中硬编码了这个登录信息.保护这些信息的最佳方法是什么?

如果我遵循这个主题的建议,我应该将登录信息放在网站根目录之外的配置文件中: 如何在PHP中保护数据库密码?

这是最好的建议吗?或者有更好的方法来保护登录信息?

php security passwords login password-protection

7
推荐指数
1
解决办法
5698
查看次数

以与预览图层匹配的大小导出AVCaptureSession视频

我正在使用AVCaptureSession会话预设录制视频AVCaptureSessionPreset640x480.我正在使用AVCaptureVideoPreviewLayer非标准尺寸(300 x 300),在录制时将重力设置为纵横填充.它的设置如下:

self.previewLayer = [[AVCaptureVideoPreviewLayer alloc] initWithSession:_captureSession];
_previewLayer.videoGravity = AVLayerVideoGravityResizeAspectFill;
_previewLayer.frame = _previewView.bounds; // 300 x 300
[_previewView.layer addSublayer:_previewLayer];
Run Code Online (Sandbox Code Playgroud)

录制视频后,我想以快速格式将其写入文件.在播放过程中,我再次以300 x 300非标准尺寸的图层播放视频.由于这些视频最终将通过网络连接传输,因此保留完整的640x480视频似乎很浪费.

导出视频以匹配300 x 300预览图层的最佳方法是什么?我是一个AVFoundation菜鸟,所以如果我以错误的方式解决这个问题,请告诉我.我只是希望录制期间在预览图层中显示的录制视频与磁盘上导出的视频相匹配.

avfoundation ios avcapture avcapturesession avvideocomposition

7
推荐指数
1
解决办法
6128
查看次数