小编Avn*_*arr的帖子

使用Swift Package Manager时,如何生成用于开发的Xcode项目文件

我正在使用新的开源Swift包管理器,并能够下载文件.我希望管理员根据它检索的包创建一个"开发环境"(通过Xcode).

有人处理过吗?

xcode package-managers swift swift-package-manager

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

动画UICollectionView的框架和布局更改

我正在尝试创建一个效果,我在更改帧大小时更改我的UICollectionView的布局

最初,collectionView布局在整个屏幕上呈现"缩略图"库样式.

在将框架尺寸调整为细条后 - 我想呈现"电影条"风格的布局

两种布局都可以独立工作,并且符合预期.

我尝试过类似的代码:

[UIView animateWithDuration:1
                          delay:0.0
                        options:UIViewAnimationOptionCurveEaseOut
                     animations:^{
                         self.collectionview.frame = newFrame; // animate the frame size


                     }
                     completion:^(BOOL finished) {
                        [self.collectionView.collectionViewLayout invalidateLayout];

    [self.collectionView setCollectionViewLayout:filmstriplayout animated:YES];    // now set the new layout
                     }];
Run Code Online (Sandbox Code Playgroud)

但它看起来非常不稳定,没有按预期调整大小.

有没有办法在动画更改的同时更改集合视图布局和帧大小?

uiviewanimation ios uicollectionview uicollectionviewlayout

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

UIButton具有按住操作和释放操作

我想创建一个可以按下的UIButton,当按下它时会调用"hold down"动作一次.当它被释放时,调用"hold was release"动作.

此代码无法正常工作,因为触摸可以在按钮内移动,并且事件不会按正确的顺序触发

[button handleControlEvent:UIControlEventTouchDown withBlock:^{
        [self performMomentaryAction:PXActionTypeTouchDown];
    }];
[button handleControlEvent:UIControlEventTouchUpInside withBlock:^{
        [self performMomentaryAction:PXActionTypeTouchUp];
    }];
Run Code Online (Sandbox Code Playgroud)

句柄控制事件基于UIBUtton +块实现

objective-c uibutton uitouch ios

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

Swift - 如何在具体子类中覆盖扩展方法

我有一个UIView实现协议的扩展

protocol SomeProtocol {
  var property : Int
}
    extension UIView : SomeProtocol {
      var property : Int {
        get {
          return 0
        }
        set {
          // do nothing
        }
      }
    }
Run Code Online (Sandbox Code Playgroud)

在具体的子类中,我想覆盖此扩展方法:

class Subclass : UIView, SomeProtocol {
  var _property : Int = 1
  var property : Int {
    get { return _property}
    set(val) {_property = val}
  }
}
Run Code Online (Sandbox Code Playgroud)

我设置断点并看到调用扩展方法而不是具体的子类方法:

var subclassObject = Subclass()

someObject.doSomethingWithConcreteSubclassObject(subclassObject)

// other code;

fun doSomethingWithConcreteSuclassObject(object : UIView) {
  var value = object.property // always …
Run Code Online (Sandbox Code Playgroud)

access-control ios swift swift-extensions

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

Swift - Enum的相关值或扩展名

关于swift枚举的一般问题.

我想创建一个"icon"的枚举,并将一个值"关联"到枚举的情况

enum Icon {
  case plane
  case arrow
  case logo
  case flag
}
Run Code Online (Sandbox Code Playgroud)

我想为枚举值创建一个关联的图像.还有枚举值的相关颜色

因此,例如,如果有可能做类似的事情:

extension Icon.plane {
  var image = {
    get {
       return UIImage("plane.png")
    }
  }
  var color = {
    get {
       return UIColor.greenColor()
    }
  }
}


var image = Icon.arrow.image // the image associated to the enum
var color = Icon.arrow.color // the color associated to the enum
Run Code Online (Sandbox Code Playgroud)

这类事可能吗?

enums associated-types computed-values associated-object swift

16
推荐指数
2
解决办法
5671
查看次数

如何在编译时静态比较两个字符串

我想创建一个可以比较2个字符串的宏,如果不满足条件则发出编译时错误.这可能是编译时断言.

我不知道怎么能这样做.

例如:

STATIC_COMPARE("THIS STRING","THIS STRING") -> would emit a compile time error
STATIC_COMPARE("THIS STRING","THIS OTHER STRING) -> wouldn't emit a compile time error.
Run Code Online (Sandbox Code Playgroud)

宏会看起来像

#define STATIC_COMPARE(str1,str2) if (str1==str2) emit an error with a message
Run Code Online (Sandbox Code Playgroud)

所以我想问题归结为能够在编译时比较2个字符串.

c++ macros xcode gnu compiler-errors

11
推荐指数
3
解决办法
4687
查看次数

每个对象使用dispatch_once_t而不是每个类

有多个源调用特定方法,但我想确保它被调用一次(每个对象)

我想使用类似的语法

// method called possibly from multiple places (threads)
-(void)finish
{

    static dispatch_once_t onceToken;
    dispatch_once(&onceToken, ^{
        [self _finishOnce]; // should happen once per object
    });
}
// should only happen once per object
-(void)_finishOnce{...}
Run Code Online (Sandbox Code Playgroud)

问题是令牌是在同一个类的所有实例中共享的 - 所以不是一个好的解决方案 - 每个对象是否有dispatch_once_t - 如果不是,确保它被调用一次的最佳方法是什么?

编辑:

这是我想到的一个提议的解决方案 - 它看起来好吗?

@interface MyClass;

@property (nonatomic,strong) dispatch_queue_t dispatchOnceSerialQueue; // a serial queue for ordering of query to a ivar

@property (nonatomic) BOOL didRunExactlyOnceToken;

@end

@implementation MyClass

-(void)runExactlyOnceMethod
{
  __block BOOL didAlreadyRun = NO;
  dispatch_sync(self.dispatchOnceSerialQueue, ^{
     didAlreadyRun …
Run Code Online (Sandbox Code Playgroud)

singleton objective-c grand-central-dispatch

10
推荐指数
2
解决办法
5592
查看次数

Bitcode错误使用xcodebuild打包ipa

首先,我想声明没有bitcode,一切都很完美.当我打开应用程序中的"bitcode"标志时,问题就出现了.

此外,所有构建都是通过CI流(不是手动在xcode-> archive et.al中).

该框架是在与应用程序本身分开的流程中构建的(该应用程序嵌入了编译的框架)

当我尝试打包ipa时,我收到此错误:

❌ld:bitcode bundle无法生成,因为'..../Framework.framework/Framework'是在没有完整bitcode的情况下构建的.bitcode的所有框架和dylib必须从Xcode Archive或Install build for architecture armv7生成

❌clang:错误:链接器命令失败,退出代码为1(使用-v查看调用)

关于框架:

我正在使用以下命令构建框架:(省略技术细节)

# iphone (arm)
xcodebuild -configuration Release -sdk iphoneos CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO

# iphone (simulator)
xcodebuild -configuration Release -sdk iphonesimulator CODE_SIGN_IDENTITY="" CODE_SIGNING_REQUIRED=NO
Run Code Online (Sandbox Code Playgroud)

然后脂肪(FAT二进制)

lipo -create /Release-iphonesimulator/Framework.framework/Framework -output /Universal/Framework.framework/Framework
Run Code Online (Sandbox Code Playgroud)

我已经将编译器标志添加到框架中以"嵌入bitcode"

在此输入图像描述

我甚至"验证"它有其他所有问题的bitcode :( 编译启用了bitcode的iOS库)

另外,检查二进制文件是否包含bitcode的最简单方法是使用otool和grep:

otool -l binary_name | grep __LLVM

你会看到一个或多个segname __LLVM条目,如果它有bitcode或空输出,如果没有.

otool -arch arm64 -l Frameworks/Framework.framework/Framework  | grep __LL
segname __LLVM
segname __LLVM
Run Code Online (Sandbox Code Playgroud)

我还尝试了添加编译标志的其他变体

xcodebuild OTHER_CFLAGS="-fembed-bitcode"
Run Code Online (Sandbox Code Playgroud)

并报告给我相同的错误

xcode xcodebuild ios bitcode xcode8

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

ios iphone挂钩直接打开instagram而不显示UIDocumentInteractionController

我正在我的应用程序中通过instagram集成共享图像.我已经阅读了他们的文档.

似乎我需要使用iOS UIDocumentInteractionController来允许这个(我知道它允许访问我的应用程序的沙箱中的文件).

深入挖掘,我遇到了这个图书馆,这让事情变得非常简单.

我遇到的问题是它提供了动作表(只有一个按钮--Losk ...)如何使用Instagram钩子,使用UIDocumentInteractionController而不显示动作表.我遇到的这个问题几乎是一样的,但过时却没有答案.

ios uidocumentinteraction instagram uidocument

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

以编程方式强制UIWebView进入全屏模式

在UIWebview中播放媒体文件时(例如youtube)

html5媒体播放器有一个"全屏"按钮 - 我该怎么办?

  • 知道玩家何时进入全屏
  • 强制HTML5播放器进入全屏

在此输入图像描述

youtube-api uiwebview nsnotificationcenter ios youtube-javascript-api

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