我有一个游戏,其中设备的方向影响游戏的状态.用户必须在横向,纵向和反向横向方向之间快速切换.到目前为止,我一直在通过以下方式注册游戏以获取方向通知:
[[UIDevice currentDevice] beginGeneratingDeviceOrientationNotifications];
Run Code Online (Sandbox Code Playgroud)
但它太慢了 - 旋转电话和通知实际被解雇之间似乎有大约第二个延迟.我需要一种方法来立即检测设备方向的变化.我已经尝试过使用陀螺仪进行试验,但我还不熟悉它,以了解它是否是我正在寻找的解决方案.
在使用xcode 6验证或提交我的应用时,我收到错误消息:
ERROR ITMS-9000: "Invalid Image Path - No image found at the path referenced
under key 'CFBundleIcons': 'AppIcon120x120'"
Run Code Online (Sandbox Code Playgroud)
我检查了我的plist文件,并且没有CFBundleIcons的条目.我正在使用资产目录,我可以看到它在常规目标设置下正确配置(它也可以使用设备上的图标正确构建).我也试过删除并重新添加目录.我最好的猜测是,当在多个目标中使用多个资产目录时,xcode中存在某种错误.有任何想法吗?
我更新到Xcode 8 beta 5,现在从继承自UIView的类中获得以下错误:
Method does not override any method from its superclass
override public func intrinsicContentSize() -> CGSize
{
...
}
Run Code Online (Sandbox Code Playgroud)
有解决方法吗?
在Obj-C中,常见的做法是使用便捷函数来执行常见操作,例如为视图配置自动布局:
func makeConstraint(withAnotherView : UIView) -> NSLayoutConstraint
{
// Make some constraint
// ...
// Return the created constraint
return NSLayoutConstraint()
}
Run Code Online (Sandbox Code Playgroud)
如果你只需要设置约束并忘记它,你可以调用:
[view1 makeConstraint: view2]
如果您想稍后存储约束以便可以删除/修改它,您可以执行以下操作:
NSLayoutConstraint * c;
c = [view1 makeConstraint: view2]
Run Code Online (Sandbox Code Playgroud)
我想在swift中执行此操作,但如果我调用上面的函数并且不捕获返回的约束,我会收到警告:
Result of call to 'makeConstraint(withAnotherView:)' is unused
Run Code Online (Sandbox Code Playgroud)
很烦人.有没有办法让Swift知道我并不总是想要捕获返回值?
注意:我知道这一点.这很难看,而不是我想要的:
_ = view1.makeConstraint(withAnotherView: view2)
Run Code Online (Sandbox Code Playgroud) 我有一个UICollectionView具有节标题,但没有节页脚.因此,我没有明确的页脚视图.
Apple的文档说明了这一点You must not return nil from this method.
func collectionView(_ collectionView: UICollectionView, viewForSupplementaryElementOfKind kind: String, at indexPath: IndexPath) -> UICollectionReusableView {
switch kind {
case UICollectionElementKindSectionHeader:
let headerView = collectionView.dequeueReusableSupplementaryView(ofKind: kind,
withReuseIdentifier: "MyHeaderView",
for: indexPath) as! MyHeaderView
switch indexPath.section
{
case 0:
headerView.label_title.text = "SOME HEADER"
case 1:
headerView.label_title.text = "ANOTHER HEADER"
default:
headerView.label_title.text = "UNKNOWN HEADER"
}
return headerView
default:
assert(false, "Unexpected element kind") // Not a good idea either
}
return nil // NOPE, not …Run Code Online (Sandbox Code Playgroud) UIViewPropertyAnimator非常方便修改视图的变换,alpha等.但是,有时您希望为CAShapeLayer路径设置动画或UIImageView更改图像.有没有办法扩展UIViewPropertyAnimator的功能以支持其他属性?如果没有,我如何将单独的动画与复杂的关键帧动画同步?
在Xcode 8 beta 5中开始了一个新项目,我收到了每个目标中每个可可豆荚的警告:
ld: warning: directory not found for option '-F/Users/NinjaCoder/Library/Developer/Xcode/DerivedData/NinjaProduct-bfwyaspiuhsjzkhepkjmeoiayjnk/Build/Products/Debug-iphonesimulator/PureLayout'
Run Code Online (Sandbox Code Playgroud)
我仍然可以跑,但我想摆脱这些警告.尝试在此链接上的解决方案,但它们不起作用:如何修复找不到选项-F错误的目录
对于导航,我构建了一个简单的工厂类,它生成一个将路由推送到导航器的 ListTile:
static Widget simpleNavRow(String text, BuildContext context, String route) {
return Column(
children: <Widget>[
ListTile(
title: Text(text),
onTap: () {
Navigator.pushNamed(context, route);
},
),
Divider(),
],
);
}
Run Code Online (Sandbox Code Playgroud)
然而,我很快意识到支持推送小部件也会很方便(或者如果可能的话从它们的类中实例化)。我不知道如何让“路由”参数接受字符串或小部件,所以我创建了一个用这两种类型之一初始化的类。这段代码有效,但有没有更好的方法来实现这一点?
class NavTo {
String route;
Widget widget;
NavTo.route(this.route);
NavTo.widget(this.widget);
push(BuildContext context) {
if (route != null) {
Navigator.pushNamed(context, route);
}
if (widget != null) {
Navigator.push(context, MaterialPageRoute(builder: (context) {
return widget;
}));
}
}
}
class ListHelper {
static final padding = EdgeInsets.all(12.0);
static Widget simpleNavRow(String text, BuildContext context, NavTo …Run Code Online (Sandbox Code Playgroud) 设置UIView角的半径可以通过以下方式完成:
设置layer的cornerRadius属性:
view.layer.cornerRadius = 5;
view.layer.masksToBounds = true;
Run Code Online (Sandbox Code Playgroud)涂上面膜:
func roundCorners(corners:UIRectCorner, radius: CGFloat) {
let path = UIBezierPath(roundedRect: self.bounds, byRoundingCorners: corners, cornerRadii: CGSize(width: radius, height: radius))
let mask = CAShapeLayer()
mask.path = path.cgPath
self.layer.mask = mask
}
Run Code Online (Sandbox Code Playgroud)覆盖draw(_:):
func draw(_ rect: CGRect) {
// Size of rounded rectangle
let rectWidth = rect.width
let rectHeight = rect.height
// Find center of actual frame to set rectangle in middle
let xf: CGFloat = (self.frame.width …Run Code Online (Sandbox Code Playgroud)通过UICollectionView教程,我看到一些UICollectionViewCell子项在哪里UICollectionReusableView被子类化,而另一些在哪里被子类化.当你使用一个而不是另一个时,文档并没有说清楚.