小编Tho*_*sen的帖子

比CGContextDrawImage更快地合并两个UIImages

我将两个UIImages合并到一个上下文中.它可以工作,但它执行得非常慢,我需要更快的解决方案.我的解决方案是mergeImage: withImage:在iPad 1G上拨打电话需要大约400毫秒.

这是我做的:

-(CGContextRef)mergeImage:(UIImage*)img1 withImage:(UIImage*)img2
{
    CGSize size = [ImageToolbox getScreenSize];
    CGContextRef context = [ImageToolbox createARGBBitmapContextFromImageSize:CGSizeMake(size.width, size.height)];

    CGContextSetRenderingIntent(context, kCGRenderingIntentSaturation);

    CGContextDrawImage(context, CGRectMake(0, 0, size.width, size.height), img1.CGImage);
    CGContextDrawImage(context, CGRectMake(0, 0, size.width, size.height), img2.CGImage);


    return context;
}
Run Code Online (Sandbox Code Playgroud)

这是ImageToolbox类的静态方法:

static CGRect screenRect;

+ (CGContextRef)createARGBBitmapContextFromImageSize:(CGSize)imageSize
{
    CGContextRef    context = NULL;
    CGColorSpaceRef colorSpace;
    void *          bitmapData;
    int             bitmapByteCount;
    int             bitmapBytesPerRow;

    size_t pixelsWide = imageSize.width;
    size_t pixelsHigh = imageSize.height;

    bitmapBytesPerRow   = (pixelsWide * 4);
    bitmapByteCount     = (bitmapBytesPerRow * pixelsHigh);

    colorSpace = CGColorSpaceCreateDeviceRGB();
    if (colorSpace …
Run Code Online (Sandbox Code Playgroud)

iphone objective-c ipad ios

6
推荐指数
1
解决办法
886
查看次数

在特定点停止CABasicAnimation

我正在使用创建的旋转动画CABasicAnimation.它旋转UIView超过2秒.但我需要能够在UIView触摸时停止它.如果我删除动画,则视图与动画开始前的位置相同.

这是我的动画代码:

float duration = 2.0;
float rotationAngle = rotationDirection * ang * speed * duration;
//rotationAngle =  3*(2*M_PI);//(double)rotationAngle % (double)(2*M_PI) ;
CABasicAnimation* rotationAnimation;
rotationAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"];
rotationAnimation.toValue = [NSNumber numberWithFloat: rotationAngle ];
rotationAnimation.duration = duration;
rotationAnimation.cumulative = YES;
rotationAnimation.removedOnCompletion = NO;
rotationAnimation.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseOut];
rotationAnimation.fillMode = kCAFillModeForwards;
rotationAnimation.delegate = self;

[self.view.layer addAnimation:rotationAnimation forKey:@"rotationAnimation"];
Run Code Online (Sandbox Code Playgroud)

如何在UIView旋转时将旋转停在哪里?我知道如何管理触摸部分,但我无法弄清楚如何在动画的当前角度停止视图.

解决方案: 我通过获取表示层的角度,移除动画并设置视图的变换来解决问题.这是代码:

[self.view.layer removeAllAnimations];      
CALayer* presentLayer = self.view.layer.presentationLayer; 
float currentAngle = [(NSNumber *)[presentLayer valueForKeyPath:@"transform.rotation.z"] floatValue]; …
Run Code Online (Sandbox Code Playgroud)

iphone core-animation objective-c ipad ios

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

将约束添加到xib中的"主视图"

UIView在.xib文件中定义了一个.我需要设置translatesAutoresizingMaskIntoConstraints = NO.这意味着框架没有转换为约束,所以我需要自己设置大小约束.

我为a创建了一个工作类别方法UIView:

-(NSArray*)setSizeConstraints:(CGSize)size
{
    NSLayoutConstraint* height = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeHeight relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1  constant:size.height];
    NSLayoutConstraint* width = [NSLayoutConstraint constraintWithItem:self attribute:NSLayoutAttributeWidth relatedBy:0 toItem:nil attribute:NSLayoutAttributeNotAnAttribute multiplier:1  constant:size.width];

    [self addConstraint:height];
    [self addConstraint:width];

    return [NSArray arrayWithObjects:height, width, nil];
}
Run Code Online (Sandbox Code Playgroud)

但我想从Xcode界面构建器设置这些约束,但我的所有AutoLayout控件都是灰色的: Xcode界面构建器

有没有办法在界面构建器中执行此操作?

xcode objective-c xib ios autolayout

6
推荐指数
1
解决办法
3171
查看次数

UIPageViewController在向前转时缓慢加载,但不向后加载

我的UIPageViewController节目UIViewController,享有UIWebView作为子视图.我的问题是,当我向前转动UIWebView负载时比向后转动时要慢.当向后转时,我立即看到我想要看的视图控制器的视图,但是当向前看时,我可以看到视图控制器的视图在子视图出现之前的短时间内是白色的.

这不是因为之前的页面已被加载一次,因为当向前,向后然后再转发到同一页面时也会出现问题.

在加载下一页和上一页时,我使用完全相同的方法和类.

为什么会发生这种情况并且有办法解决这个问题?

objective-c ios uipageviewcontroller

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

在iOS中使用时,UIImage看起来有所不同

我在使用png图像时出现问题,与实际图像相比,iOS上的颜色错误.

无论我如何使用图像,它总是得到错误的颜色.我试过了UIButton,UIImageView它给出了相同的结果.

这是一个非常标准的用途UIImage:

UIImage* greenButtonImg = [UIImage imageNamed:@"btn_green"];
UIImageView* testView = [[UIImageView alloc] initWithImage:greenButtonImg];
[self.view addSubview:testView];
Run Code Online (Sandbox Code Playgroud)

第二个图像是它在iOS上的外观,第一个按钮是它在Mac上的外观(Finder和Photoshop):

第一个按钮是在Mac上查看图像,第二个图像是在iOS上的图像外观

如您所见,第二个按钮具有不同的绿色.这种情况发生在使用此图片的应用程序中.它发生在模拟器和iPhone 5上.

什么可能导致这个问题?这可能是由Photoshop中创建图像的设置引起的吗?

objective-c uiimage ios

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

重用 Apple Sandbox 安全范围的书签

我正在创建一个应用程序,它正在读取应用程序沙箱之外的文件。我需要用户的权限才能读取这些文件,并且通过让用户在NSOpenPanel.

我的问题是我不希望每次应用程序访问相同路径时用户都给我权限。我将书签保存在NSApplicationSupportDirectory文件夹中。

这工作正常,直到用户重新启动计算机,然后似乎保存的书签变得无效。从磁盘加载书签数据时看起来完全没问题,但应用程序需要新的安全范围的书签来读取文件,即使应用程序正在使用在重新启动前工作的路径的书签。

我正在创建这样的书签:

NSData * bookmark  = [url bookmarkDataWithOptions:NSURLBookmarkCreationWithSecurityScope includingResourceValuesForKeys:nil relativeToURL:nil error:&err];
NSURL* bookmarkUrl = [NSURL URLByResolvingBookmarkData:bookmark options:NSURLBookmarkResolutionWithSecurityScope relativeToURL:nil bookmarkDataIsStale:&isStale error:&err]
Run Code Online (Sandbox Code Playgroud)

我正在检查书签是否可以通过以下方式访问:

[url startAccessingSecurityScopedResource];
[[NSFileManager defaultManager] contentsOfDirectoryAtURL:url includingPropertiesForKeys:nil options:NSDirectoryEnumerationSkipsHiddenFiles error:&err]

if (err && err.code == NSFileReadNoPermissionError)
{
    NSLog(@"No URL access");
    res = NO;
}
else if(err)
{
    NSLog(@"URL validate unexpected error:%@", err);
    res = NO;
}

if (res)
{
    //Bookmark works!
}
[url stopAccessingSecurityScopedResource];
Run Code Online (Sandbox Code Playgroud)

只要我不重新启动 Mac,这就可以工作。我可以退出应用程序并重新启动它,我的书签仍然有效。但是,一旦 Mac 重新启动,NSFileReadNoPermissionError即使我使用的是在重新启动之前工作的已保存书签,我也会收到错误消息。

有没有办法创建一个在 Mac 重新启动时工作的书签?

macos objective-c appstore-sandbox

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

推送/弹出时UINavigationBar消失

我使用这里描述方法使用旧的(iOS7之前)推/动画动画:

@implementation UINavigationController (Retro)

- (void)pushViewControllerRetro:(UIViewController *)viewController {
    CATransition *transition = [CATransition animation];
    transition.duration = 0.25;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromRight;
    [self.view.layer addAnimation:transition forKey:nil];

    [self pushViewController:viewController animated:NO];
}

- (void)popViewControllerRetro {
    CATransition *transition = [CATransition animation];
    transition.duration = 0.25;
    transition.timingFunction = [CAMediaTimingFunction functionWithName:kCAMediaTimingFunctionEaseInEaseOut];
    transition.type = kCATransitionPush;
    transition.subtype = kCATransitionFromLeft;
    [self.view.layer addAnimation:transition forKey:nil];

    [self popViewControllerAnimated:NO];
}

@end
Run Code Online (Sandbox Code Playgroud)

我的问题是iOS7 UINavigationBar在推送新的视图控制器时似乎淡化了以前的视图控制器.通常这看起来很好,因为iOS 7将视图拖到彼此之上.但是当我使用iOS7之前的动画时,它会给我一个短暂的闪光,因为导航栏会在新视图从右侧推入时消失.

有没有办法在导航栏上禁用淡入淡出动画?

objective-c ios ios7

5
推荐指数
0
解决办法
266
查看次数

如何在合并时防止分离的HEAD?

如果操作将导致分离的HEAD,有没有办法配置Git拒绝合并?

我知道如何解决分离的HEAD,但我宁愿让git拒绝合并动作以完全避免分离的HEAD.

发生这种情况时会出现问题:

  1. 我正在develop主仓库中的一个分支上工作,我还在子模块库中进行了一些更改.该develop分支更新以匹配最新提交的子模块.
  2. 一位同事要合并developmaster,但忘记拉子模块master第一.这导致分离的HEAD.

git git-submodules

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

NSTimer不在子线程中触发

我试图NSTimer在子线程中触发.我的代码基本上是这样的:

-(void) handleTimer:(NSTimer *)theTimer {  
    NSLog(@"timer fired");  
}

-(void) startMyThread {  
    // If I put timer in here, right before I start my new thread, it fires.  
    // [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(handleTimer:) userInfo:nil repeats:NO];  
    [NSThread detachNewThreadSelector:@selector(run) toTarget:self withObject:nil];  
}

// This method is called from inside the new thread  
-(void) playNote:(Note *)theNote withTemplate:(NSString *)theTemplate X:(int)x andY:(int)y {
    NSLog(@"before timer");  
    // The timer doesn't fire in here. (But the print statements do.)  
    [NSTimer scheduledTimerWithTimeInterval:1 target:self selector:@selector(handleTimer:) userInfo:nil repeats:NO];
    NSLog(@"after …
Run Code Online (Sandbox Code Playgroud)

objective-c nstimer nsthread ios

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

如何使用NSScrollview?

我无法弄清楚如何实际使用NSScrollview.我将滚动视图对象拖到NSWindow界面构建器中.然后我将一些拖动NSButtons到滚动视图上.我的问题是:

我如何实际向下滚动,例如,原始高度的2倍?

macos cocoa scroll objective-c

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

Visual Studio 2010中C#颜色的颜色下划线

我最近重新安装了Windows 7和Visual Studio 2010 + Resharper.重新安装后,一些颜色下划线已停止工作.它用于在下面创建一条蓝线,在下面创建Colors.Blue一条绿线Colors.Green.列出颜色时,IntelliSense也有彩色方块.

这是一个缺少着色的代码示例:

textBox.Foreground = new SolidColorBrush(Colors.Red);
Run Code Online (Sandbox Code Playgroud)

如何使下划线颜色和IntelliSense颜色再次起作用?

c# intellisense visual-studio-2010

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

如何设置TextBox Header的样式?

我使用的TextBox是这样的:

<TextBox x:Name="TxtName" IsEnabled="False" Header="Textbox header" IsReadOnly="True" TextWrapping="Wrap"  Text="{Binding Name,Mode=TwoWay}" Style="{StaticResource MyTextBoxStyle}" />
Run Code Online (Sandbox Code Playgroud)

我希望能够风格(即设置字体)的HeaderTextBox一个ResourceDictionary.当我设定FontFamily了的TextBox它也影响了头,但我想设置两个不同的字体样式里面的文本TextBox,并在文本Header.

这是我的风格TextBox:

<Style x:Key="MyTextBoxStyle" TargetType="TextBox">
    <Setter Property="BorderThickness" Value="0" />
    <Setter Property="FontFamily" Value="Comic Sans MS" />
</Style>
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点?

c# xaml winrt-xaml windows-store-apps windows-8.1

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

如何"#define"这个变量?

我在0x102地址中有一个整数值,我需要创建#define ABC ...宏.
ABC是变量或其他东西(访问0x102单元格).
必须可以执行以下操作:

ABC = 666;  
int x = ABC*2 + 4;  
int *p = &ABC;  
Run Code Online (Sandbox Code Playgroud)

你能帮助我吗 ?

c pointers memory-management

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