小编Dan*_*sko的帖子

使用NSUserActivity使应用程序活动和状态可搜索

以下是我试图实现的代码,以使应用程序活动和状态可搜索但无法在iOS搜索上显示

NSUserActivity *userActivity = [[NSUserActivity alloc]initWithActivityType:@"com.mycompany.activity-type"];

userActivity.title = @"Hello world from in app search";
userActivity.keywords = [NSSet setWithArray:@[@"Hello",@"Welcome", @"search"]];
userActivity.userInfo = @{@"id":@"com.example.state"};

userActivity.eligibleForSearch = YES;    
[userActivity becomeCurrent];
Run Code Online (Sandbox Code Playgroud)

链接让我的问题更清楚.

objective-c ios ios9 nsuseractivity

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

Swift - 向下转换NSURLResponse到NSHTTPURLResponse以获取响应代码

我正在使用NSURLRequest在SWIFT中构建休息查询

var request : NSURLRequest = NSURLRequest(URL: url)

var connection : NSURLConnection = NSURLConnection(request: request, delegate: self, startImmediately: false)!
connection.start()
Run Code Online (Sandbox Code Playgroud)

我的问题是如何从返回的响应中获取响应代码:

    func connection(didReceiveResponse: NSURLConnection!, didReceiveResponse response: NSURLResponse!) {
//...
}
Run Code Online (Sandbox Code Playgroud)

根据Apple: NSHTTPURLResponse它是一个NSURLResponse具有状态代码的子类,但我不确定如何转发我的响应对象,以便我可以看到响应代码.

这似乎没有削减它:

println((NSHTTPURLResponse)response.statusCode)
Run Code Online (Sandbox Code Playgroud)

谢谢

ios swift

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

NSUserActivity切换不适用于自定义数据

我正试图在iPhone和iPad之间测试iOS 8.1切换功能和NSUserActivity.为此,我尝试了实现自己的解决方案,并使用Apple的PhotoHandoff项目.但是,它不起作用.

如果我提供了一个webpageURL,切换工作正常,但是当我尝试使用userData或者addUserInfoEntriesFromDictionary实在不行,我不能为我的生活出美中不足的是什么使数据的工作.

示例代码:

NSUserActivity *activity = [[NSUserActivity alloc] initWithActivityType:@"com.company.MyTestApp.activity"];
activity.title = @"My Activity";
activity.userInfo = @ {};
//    activity.webpageURL = [NSURL URLWithString:@"http://google.com"];

self.userActivity = activity;

[self.userActivity becomeCurrent];
[self.userActivity addUserInfoEntriesFromDictionary:@ { @"nanananan": @[ @"totoro", @"monsters" ] }];
Run Code Online (Sandbox Code Playgroud)

(我也无法使用具有相应活动类型的Mac应用程序)

objective-c ios handoff ios8.1 nsuseractivity

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

在Objective-C中的Swift类上调用NSStringFromClass会返回模块损坏的名称

我知道这个问题,关于我们如何能够得到斯威夫特的Objective-C类的可读类名.

我想要实现的是从objective-c内部获取Swift类的可读类名,而不使用模块修改类名.

所以,如果我有一个Swift类:

class Foo: NSObject{}
Run Code Online (Sandbox Code Playgroud)

然后在Objective-C中,我很乐意使用方便的NSStringFromClass将类名转换为字符串.

我希望NSStringFromClass([Foo class])返回,@"Foo"但它返回@"Bar.Foo"Bar模块名称.

我遇到了这个要点,但它看起来有点乱和乱,是否有更好的方法?不包括手动将类名称键入字符串的内容将是首选.

objective-c ios swift xcode6

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

UICollectionViewCell systemLayoutSizeFittingSize返回不正确的宽度

我一直在玩弄动态UICollectionViewCell的和已经注意到,在iOS 8调用cell.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize)UICollectionViewCell返回不正确的宽度.目前解决此问题的唯一解决方法是显式添加宽度约束以强制单元格的宽度.以下代码用于Cell子类:

func calculatePreferredHeightForFrame(frame: CGRect) -> CGFloat {
    var newFrame = frame
    self.frame = newFrame
    let widthConstraint = NSLayoutConstraint(item: contentView, attribute: .Width, relatedBy: .Equal, toItem: nil, attribute: .NotAnAttribute, multiplier: 1, constant: CGRectGetWidth(frame))
    contentView.addConstraint(widthConstraint)
    self.setNeedsUpdateConstraints()
    self.updateConstraintsIfNeeded()
    self.setNeedsLayout()
    self.layoutIfNeeded()
    let desiredHeight: CGFloat = self.contentView.systemLayoutSizeFittingSize(UILayoutFittingCompressedSize).height
    newFrame.size.height = CGFloat(ceilf(Float(desiredHeight)))
    contentView.removeConstraint(widthConstraint)
    return CGRectGetHeight(newFrame)
}
Run Code Online (Sandbox Code Playgroud)

我知道,对于iOS 8和动态UICollectionViewFlowLayout,UICollectionViewCell的contentView以不同的方式处理约束,但是我在这里缺少什么?为确保systemLayoutSizeFittingSize在单元格上使用特定宽度,需要做些什么?

我也遇到过这篇文章(使用自动布局在UICollectionView中指定单元格的一个维度)并且相信这可能实际上使我的问题无效.也许UICollectionViewFlowLayout不是为只有一个动态维度的单元格设计的,但仍然无法解释为什么单元格给出了不寻常的宽度.

ios autolayout uicollectionview xcode6

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

制作一个填充其超级视图的自定义UIView子视图

所以我用自己的初始化程序编写了自己的自定义视图.但是,当我的主视图加载我的自定义视图时,会以错误的方式进行描述.它的边界为600x600矩形,而superview为375x607.我确实试图把自动约束,似乎没有工作.我尝试在子视图初始化中以编程方式执行此操作,但每当我尝试将其bounds属性初始化为其superview边界时,我在superview中得到nil.

override init(frame: CGRect) {
    super.init(frame: frame)
    self.setup()
}

required init(coder aDecoder: NSCoder) {
    super.init(coder: aDecoder)
    self.setup()
}

func setup() {
    initPathLayer()
    initHandleView()
    initHandlePanGestureRecognizer()

    layoutPathLayer()
    layoutHandleViews()
}
Run Code Online (Sandbox Code Playgroud)

我尝试了互联网上的所有内容,使子视图填充其超级视图,但我认为子视图在superview之前被初始化了?那可能吗 ?在ViewController中,我将自定义视图声明为Outlet连接.我确信这个问题应该非常简单,而且我不知道Swift初始化视图的方式.

有任何想法吗 ?

谢谢.

layout ios swift

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

Swift类应该加上前缀以避免潜在的Objective-C兼容性冲突问题

为了提供交叉兼容性,Swift允许生成桥接头,以便Objective-C可以与Swift类进行通信.

由于Swift的奇妙命名空间,我们不再需要担心我们的Swift文件前缀,因为它们被包含的框架命名.一个UIView例如是隐式名字空间UIKit.UIView.

既然Apple正在推动框架,我想知道当存在两个具有相同符号的快速桥接头时,避免头部冲突的最佳实践是什么.

一个例子:假设我们有两个声明了Swift类的框架Downloader.在Downloader提供了接口:downloadWithURL(url: NSURL)

生成桥接头将为这两个框架生成Downloader-Swift.h文件.从而引起碰撞.避免这种情况的最佳做法是什么?

macos objective-c ios swift

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

NSUserActivity缺少contentAttributeSet属性

我正在使用NSUserActivities实现iOS9搜索索引.根据文档NSUserActivity,应该有一个名为的属性contentAttributeSet,用于向搜索项添加更多内容.但是,查看Xcode 7中的NSUserActivity类不会显示具有此名称的属性.我正在使用Xcode 7 beta 6.

xcode ios ios9 nsuseractivity

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

切换无法从原生应用程序到网站

我的设备:

  • iPad Mini(最新),iOS 8 dp5.
  • Macbook Air,Yosemite dp5.

我有两个上述设备之间的Handoff工作.Safari,邮件,消息,日历等所有切换都没有问题.

我甚至可以在Air上的网站和iPad上的原生应用之间切换.

我还不能做的是从我在iPad上的原生应用程序到我的Air上的Safari网站.

对于在我的原生应用程序中加载的第一个视图控制器,我有:

- (void)viewDidLoad

{
    [super viewDidLoad];

    NSUserActivity *webHandoff = [[NSUserActivity alloc] initWithActivityType:@"com.myApp.iphone.staging.webbrowsing"];

    webHandoff.webpageURL = [NSURL URLWithString:@"http://staging.myApp.com"];

    [webHandoff becomeCurrent];
}
Run Code Online (Sandbox Code Playgroud)

在我的应用程序的Info.plist文件中,我有:

<key>NSUserActivityTypes</key>
<array>
      <string>com.myApp.iphone.staging.webbrowsing</string>
</array>
Run Code Online (Sandbox Code Playgroud)

我错过了什么或者我的配置错误吗?

谢谢你的帮助!

ios8 handoff continuity nsuseractivity

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

如何使用SWIFT以编程方式设置UICollectionViewCell大小取决于其中UIlabel的动态大小?

我有一个任务,我要准备一个简单的GridView,几乎没有约束.我想过使用UICollectionView并且还对网做了一些研究.我在这里发现了一篇博文,其内容与我希望实现的类似.

现在,它使用customCollectionViewCell行和列的类.每个细胞都有一个UILabel.UILabel因此,这可以具有动态文本,单元格应根据动态调整其大小UILabel.

请找到以下所有代码 -

UICollectionView 用于行单元格

class RowCell: UICollectionViewCell
{
    var textLabel : UILabel!

    override init(frame: CGRect)
    {
        super.init(frame: frame)

        textLabel = UILabel(frame: CGRectMake(0, 0, 65, 35))
        textLabel.font = UIFont.systemFontOfSize(UIFont.smallSystemFontSize())
        textLabel.textAlignment = .Center
        textLabel.numberOfLines = 0
        textLabel.backgroundColor = UIColor.clearColor()
        textLabel.lineBreakMode = NSLineBreakMode.ByCharWrapping
        textLabel.sizeThatFits(CGSizeMake(self.bounds.width, self.bounds.height))

        contentView.addSubview(textLabel)
        self.layer.borderWidth = 0.7
        self.layer.borderColor = charcoalColor.CGColor
        self.frame = CGRectMake(frame.origin.x, frame.origin.y, textLabel.frame.width*8, textLabel.frame.height*8)

    }

    required init(coder aDecoder: NSCoder) {
        fatalError("init(coder:) has not been implemented") …
Run Code Online (Sandbox Code Playgroud)

ios uicollectionview uicollectionviewcell uicollectionviewlayout swift

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