小编Sma*_*ree的帖子

如何制作"摇动"动画

在我的xcode项目中,我有一个UIImage.我想让它从左到右摇动(动画)一点点.我写了这段代码,然而,它没有用.

-(void)errorShake
{
    [UIView beginAnimations:nil context:NULL];
    [UIView setAnimationDuration:1.0];



    [lockImage setTransform:CGAffineTransformMakeRotation(-5 * M_PI / 180.0)];
    [lockImage setTransform:CGAffineTransformMakeRotation(-10 * M_PI / 180.0)];
    [lockImage setTransform:CGAffineTransformMakeRotation(-15 * M_PI / 180.0)];
    [lockImage setTransform:CGAffineTransformMakeRotation(-20 * M_PI / 180.0)];
     [lockImage setTransform:CGAffineTransformMakeRotation(-15 * M_PI / 180.0)];
     [lockImage setTransform:CGAffineTransformMakeRotation(-10 * M_PI / 180.0)];
     [lockImage setTransform:CGAffineTransformMakeRotation(-5 * M_PI / 180.0)];
     [lockImage setTransform:CGAffineTransformMakeRotation(0 * M_PI / 180.0)];
     [lockImage setTransform:CGAffineTransformMakeRotation(5 * M_PI / 180.0)];
     [lockImage setTransform:CGAffineTransformMakeRotation(10 * M_PI / 180.0)];
     [lockImage setTransform:CGAffineTransformMakeRotation(15 * M_PI / 180.0)];
     [lockImage setTransform:CGAffineTransformMakeRotation(20 * M_PI / 180.0)]; …
Run Code Online (Sandbox Code Playgroud)

iphone xcode objective-c uiimage ios

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

如何在工具栏的右侧添加按钮?

我以编程方式创建了一个工具栏

UIToolbar *boolbar = [UIToolbar new];
    boolbar.barStyle = UIBarStyleDefault;
    boolbar.tintColor = [UIColor orangeColor];
    [boolbar sizeToFit];
Run Code Online (Sandbox Code Playgroud)

然后添加一个按钮:

UIBarButtonItem *cancelleftBarButton =[[UIBarButtonItem alloc]initWithTitle:@"OK" style:UIBarButtonItemStyleBordered target:self action:@selector(tapBackGround:)];

cancelleftBarButton.tintColor = [UIColor orangeColor];

NSArray *array = [NSArray arrayWithObjects:cancelleftBarButton, nil];
[boolbar setItems:array animated:YES];
Run Code Online (Sandbox Code Playgroud)

但是,此按钮仅出现在工具栏的左侧.是否可以将其放在工具栏的右侧?

在此输入图像描述

iphone xcode objective-c uibutton ios

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

UIDatePicker返回错误的日期(实际日期为-1天)

我有一个UIDatePickermm/dd/yy.它工作正常,但有一个问题:我设置minimummaximum约会它,当用户试图选择禁止的日,月或年,该[datePicker date]属性开始工作错误.它会返回current day - 1或者current month - 1current year - 1.我添加了一些图片,所以你可以看到情况.

正确的日期 这是对的
错误的约会 这是错误的(选择禁止日期后)

有人知道,我该如何解决这个问题?谢谢 !

UPD: 代码

[self.myDatePicker setMinimumDate:[NSDate date]];
[self.myDatePicker setMaximumDate:[[NSDate date] addTimeInterval:2 * 365.25 * 24 * 60 * 60]]; // to get upto 5 years
NSDate * now = [[NSDate alloc] init];
[self.myDatePicker setDate: now animated: YES];

self.myDatePicker.timeZone = [NSTimeZone localTimeZone];
self.myDatePicker.calendar = [NSCalendar currentCalendar];
Run Code Online (Sandbox Code Playgroud)

cocoa-touch objective-c uidatepicker ios

11
推荐指数
4
解决办法
7781
查看次数

登录后FBSDKAccessToken currentAccessToken未更新

我实现了一个Facebook登录按钮,完全正常.但是,在用户成功登录Facebook并返回应用程序后,[FBSDKAccessToken currentAccessToken]返回NO.我添加了一个观察者,看看我想要的代码在返回应用程序后是否正在运行:

-(void)viewDidLoad
{
   [[NSNotificationCenter defaultCenter] addObserver:self   selector:@selector(checkLogIn)name :UIApplicationWillEnterForegroundNotification object:nil];
}
-(void)checkLogIn
 {
         NSLog(@"IN CHECK LOG IN");

        if ([FBSDKAccessToken currentAccessToken]) {

            NSLog(@"Access Token Activated");

        }
 }
Run Code Online (Sandbox Code Playgroud)

登录后,当我返回应用程序时,checkLogIn方法被调用但[FBSDKAccessToken currentAccessToken]仍然返回NO.但是,在我按下iPhone上的主页按钮并返回应用程序后,它会更改为YES.

如何立即更新,以便我可以向用户显示另一个视图控制器?

更新: 我找到了回到应用程序后执行正确代码的方法.关键是使用FBSDKAccessTokenDidChangeNotificationNotification Center.所以最终的结果是这样的:

 [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(checkLogIn) name: FBSDKAccessTokenDidChangeNotification object:nil];
Run Code Online (Sandbox Code Playgroud)

这样,令牌将被更新,它将起作用.

facebook objective-c ios

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

NSArray充满了NSDictionaries.如何找到对象的索引?

我有一个array充满了NSDictionaries.我想找到index一本字典,但我对这本字典的了解只是一个value关键@"name". 我怎么做?

iphone xcode objective-c nsarray ios

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

NSMutableArray的NSMutableArrays.Mutating方法发送到不可变对象

NSMutableArrayNSMutableArrays:

 NSMutableArray *array = [[NSMutableArray alloc]init];

        for (int i = 0; i < 5; i++)
        {
            NSMutableArray *miniArray = [[NSMutableArray alloc]init];

            for (int k = 0; k < 30; k++)
            {   
                [miniArray addObject:@"0"];
            }
            [array addObject:miniArray];
        }
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试这样做时:

 [[array objectAtIndex:packIndex]replaceObjectAtIndex:index withObject:@"1"];
Run Code Online (Sandbox Code Playgroud)

它崩溃了: [__NSCFArray replaceObjectAtIndex:withObject:]: mutating method sent to immutable object'

为什么?怎么修 ?谢谢 !

UPD:我把这个数组保存在NSUserDefaults:

[defaults setObject:array forKey:@"mainArray"];
Run Code Online (Sandbox Code Playgroud)

然后,我在其他课程中阅读:

array = [[NSMutableArray alloc]initWithArray:[[NSUserDefaults standardUserDefaults] objectForKey:@"mainArray"]];
Run Code Online (Sandbox Code Playgroud)

此外,我必须提到,有时代码运行良好,它将"0"更改为"1".但它有时也崩溃了.所以我无法看到逻辑,为什么它工作正常或为什么它有时会崩溃.

iphone xcode cocoa objective-c ios

7
推荐指数
2
解决办法
7047
查看次数

将iPhone应用程序分发给测试人员?

我正在开发我的iphone应用程序,现在我想将我的应用程序发送给我的测试人员.但是我应该如何发送给他们呢?另外,他们没有Xcode.有必要吗?

iphone xcode itunesconnect ios

6
推荐指数
2
解决办法
3009
查看次数

使用Metal的较旧设备的内存使用率不断上升

我使用MetalCADisplayLink实时过滤CIImage并将其渲染为MTKView

// Starting display link 
displayLink = CADisplayLink(target: self, selector: #selector(applyAnimatedFilter))
displayLink.preferredFramesPerSecond = 30
displayLink.add(to: .current, forMode: .default)

@objc func applyAnimatedFilter() {
    ...
    metalView.image = filter.applyFilter(image: ciImage)
}
Run Code Online (Sandbox Code Playgroud)

根据Xcode中的内存监控器,iPhone X上的内存使用情况稳定,并且永远不会超过100mb,在iPhone 6或iPhone 6s等设备上,内存使用率一直在增长,直到最终系统终止了该应用程序。

我已经使用检查了内存泄漏Instruments,但是没有泄漏报告。通过分配运行该应用程序也不会显示任何问题,并且该应用程序也不会被系统关闭。我还发现有趣的是,在较新的设备上,内存使用情况是稳定的,但在较旧的设备上,它的使用却在不断增长。

过滤器的复杂程度无关紧要,因为即使我尝试了大多数简单的过滤器,问题仍然存在。这是我的金属文件中的一个示例:

extern "C" { namespace coreimage {

    float4 applyColorFilter(sample_t s, float red, float green, float blue) {

        float4 newPixel = s.rgba;
        newPixel[0] = newPixel[0] + red;
        newPixel[1] = newPixel[1] + green;
        newPixel[2] = newPixel[2] + blue;

        return …
Run Code Online (Sandbox Code Playgroud)

core-image ios cadisplaylink swift metal

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

打开特定的XIB文件时Xcode崩溃

我有一个XIB工作正常,直到今天 - 当我尝试在Xcode中打开它时,沙滩球出现并在1分钟后Xcode崩溃.其他人XIBs工作得很好.此外,如果我只是构建并运行项目直接到我的设备,它也工作(和XIB在应用程序工作).

这是错误消息:

Crashed Thread:  0  Dispatch queue: com.apple.main-thread

Exception Type:  EXC_CRASH (SIGABRT)
Exception Codes: 0x0000000000000000, 0x0000000000000000

Application Specific Information:
ProductBuildVersion: 4G1004
ASSERTION FAILURE in /SourceCache/IDEInterfaceBuilderCocoaTouch/IDEInterfaceBuilderCocoaTouch-1929/IBPlugin/Utilities/IBObjectMarshalling.m:651
Details:  Failed to arbitrate IBNSLayoutConstraint, IBUIButton, IBUIImageView, IBUILabel, IBUITextField, and IBUIView.

Interface Builder encountered an error communicating with the iOS Simulator. If you choose to file a crash report or radar for this issue, please check Console.app for crash reports for "Interface Builder Cocoa Touch Tool" and include their …
Run Code Online (Sandbox Code Playgroud)

crash xcode objective-c xib

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

如何判断PKDrawing是否为空?

PencilKit在我的应用程序中使用并让我的用户在PKCanvasView. 但我不希望他们能够保存空白图纸。所以我需要检查是否PKDrawing为空白(除了透明像素之外不包含任何内容)。我在官方文档中找不到具体的方法。

我尝试将 转换PKDrawingData并检查它是否为空,但即使图纸为空白,情况也不会如此。

有没有一种方便的方法来检查 或 是否PKDrawingPKCanvasView空?

或者,有没有办法检查是否UIImage仅由透明像素组成?

uiimage swift pencilkit

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