在Swift中,我怎么能声明一个符合一个或多个协议的特定types的variables?

在Swift中,我可以通过声明如下来明确地设置一个variables的types: var object: TYPE_NAME 如果我们想更进一步,并声明一个符合多个协议的variables,我们可以使用protocol声明: var object: protocol<ProtocolOne,ProtocolTwo>//etc 如果我想声明一个符合一个或多个协议并且也是特定基类types的对象呢? Objective-C的等价物看起来像这样: NSSomething<ABCProtocolOne,ABCProtocolTwo> * object = …; 在Swift中,我期望它看起来像这样: var object: TYPE_NAME,ProtocolOne//etc 这使我们能够灵活处理基本types的实现以及协议中定义的添加接口。 还有另一个更明显的方式,我可能会失踪? 例 作为一个例子,说我有一个UITableViewCell工厂负责返回符合协议的单元格。 我们可以很容易地设置一个返回符合协议的单元的通用函数: class CellFactory { class func createCellForItem<T: UITableViewCell where T:MyProtocol >(item: SpecialItem,tableView: UITableView) -> T { //etc } } 后来我想把这些细胞出院,同时利用types和协议 var cell: MyProtocol = CellFactory.createCellForItem(somethingAtIndexPath) as UITableViewCell 这将返回一个错误,因为表视图单元格不符合协议… 我想能够指定单元格是一个UITableViewCell并符合variables声明中的MyProtocol ? 理由 如果您熟悉Factory […]

任何方式来粗体的一部分NSString?

有没有办法只加粗string的一部分? 例如: 大约距离: 120米远 谢谢!

Swift的UITableView示例

我已经在Swift和iOS上工作了好几个月了。 我很熟悉很多事情的做法,但是我不够好,所以我可以不看就写东西。 我已经赞赏堆栈溢出在过去提供快速的答案,让我回到轨道上生锈的主题(例如, AsyncTask Android示例 )。 iOS的UITableView是在这个类别中。 我已经做了几次,但我忘记了细节。 我在StackOverflow上找不到另一个问题,只是要求一个基本的例子,我正在寻找比许多在线教程(尽pipe这个很好)更短的东西。 我正在提供一个答案,以供我未来的参考和你的。

如何为iPhone 6/6 Plus Landscape Only Apps创build启动图像?

我有一个现有的景观只有应用程序,我想添加iPhone 6 / iPhone 6 Plus的支持。 当我支持iOS 6/7时,我只是使用默认命名的启动肖像图像,将横向图像旋转为纵向(即对于4“屏幕,我创build了横向1136×640,然后旋转以创build640×1136启动图像)。 我试图让iOS 8和iPhone 6/6 +的东西工作,还没有拿出一些工作呢。 以下是我尝试过的一些事情: 按照4“屏幕启动图像约定的模式,我创build了Default-667h@2x.png和Default-736h@3x.png图像,这确实欺骗了模拟器以适当的iPhone 6/6 +分辨率运行,但是启动时使用4“屏幕启动图像,而不是我创build的新图像。 使用资产目录 – 我在LaunchImages资产中为iPhone 6和iPhone 6 Plus创build肖像启动图像,为iPhone 6 Plus创build一个风景图像启动图像。 iPhone 6 Plus的作品,但iPhone 6只是显示黑屏。 (在资产目录中无法创buildiPhone 6横向启动图像) 在Info.plist中指定所有屏幕大小的UILaunchImages数组(请参阅参考资料https://developer.apple.com/library/content/documentation/General/Reference/InfoPlistKeyReference/Articles/iPhoneOSKeys.html#//apple_ref/doc/ uid / TP40009252-SW28 )。 我在这里得到与资产目录类似的结果。 我可以得到iPhone 6 Plus景观工作,但不是iPhone 6的风景。

是否有在iOS自定义振动的API?

从iOS 5开始,用户可以为警报和响铃创build自定义振动模式。 以下屏幕截图显示了用于创build一个(iOS 6中的联系人应用程序)的UI: 我一直在search,包括文档,我找不到公开的自定义振动创build或播放的公共API。 最接近的是使用AudioToolbox框架来发挥短暂的,不断的振动: AudioServicesPlaySystemSound(kSystemSoundID_Vibrate); 有谁知道是否有自定义振动的API? 它不一定是公共的API。 我很想知道联系人应用程序使用什么。 有人知道吗? PS其他人build议在CoreTelephony中使用CoreTelephony ( 示例 )。 我试过了,但由于某种原因无法得到任何振动。 2015年10月更新: iOS 9中有新的私有API与兼容设备中的Taptic Engine进行交互。 有关更多信息,请参阅iOS 9中的Taptic 。

iPhone 6和6 Plus媒体查询

有谁知道特定的屏幕大小,针对iPhone 6和6 Plus的媒体查询? 此外,图标大小和闪屏?

通过iOS创build和导出animationgif?

我在iOS应用程序中有一系列用户自定义的图像,这些图像是以简单的,逐帧的翻页样式进行animation的。 我的问题是这样的:有没有办法让用户导出他们的animation作为animationgif? 理想情况下,我想让他们通过电子邮件,社交分享(T / FB)或(最坏的情况下)保存一个animation的gif到他们的文档文件夹通过iTunes检索。 我知道如何将.png保存到照片库中,并且find了将animation录制为QT文件的方法( http://www.cimgf.com/2009/02/03/record-your-core-animation – animation/ ),但我还没有find一个方法,只是踢出一个普通的老animationgif。 我在核心animation或其他地方丢失了什么? 有没有人可以推荐的方法,框架或资源? 对不起,如果这个问题太笼统 – 努力寻找出发点。 任何帮助赞赏。

didSelectRowAtIndexPath不工作,Swift 3

任何人都可以看到为什么在世界didSelectRowAtIndexPath不会被称为? 我已经在代码和故事板中通过delegate进行三重检查。 class AddCard: UIViewController,UIPopoverPresentationControllerDelegate, UITableViewDataSource, UITableViewDelegate { @IBOutlet weak var cardView: UIView! @IBOutlet weak var tableView: UITableView! let tableItems = ["Background Color","Background Image","Font Style","Font Color"] let cellID = "cell" override func viewDidLoad() { super.viewDidLoad() tableView.delegate = self tableView.dataSource = self } override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() // Dispose of any resources that can be […]

当单击DetailDesclosurebutton时MKAnnotationView推送到视图控制器

我想在我正在显示的地图上单击DetailDisclosure时切换视图。 我目前的代码如下: – (void)mapView:(MKMapView *)mapView annotationView:(MKAnnotationView *)view calloutAccessoryControlTapped:(UIControl *)control { DetailViewController *detailViewController = [[DetailViewController alloc] initWithNibName:@"DetailViewController" bundle:nil]; detailViewController.title = dictionary[@"placeLatitude"] [self.navigationController pushViewController:detailViewController animated:YES]; } 我可以推到视图控制器,但我还没有想出如何强制它从用于生成地图的JSON数组中的细节。 我拉这样的数据来生成地图: for (NSDictionary *dictionary in array) { // retrieve latitude and longitude from the dictionary entry location.latitude = [dictionary[@"placeLatitude"] doubleValue]; location.longitude = [dictionary[@"placeLongitude"] doubleValue]; //CAN I LOAD THE TITLE/ID OF […]

NSFileManager.defaultManager()。fileExistsAtPath返回false而不是true

这怎么可能? let exists = NSFileManager.defaultManager().fileExistsAtPath(path.absoluteString) print("exists: \(exists)") //false 这是path.absoluteString //file:///Users/kuna/Library/Developer/CoreSimulator/Devices/92BD140D-5C14-43C4-80D6-904BB9594ED6/data/Containers/Data/Application/5B818832-BB19-4047-A7F8-1487F36868D6/Documents/wishlists/68/147/128/IMG_0006.PNG 你可以看到它在那里它应该是: 到底是怎么回事?