我在这里有一个UIButton,我想在图像下面有一个渐变作为背景(带有透明背景的符号),但我面临着两个不同的问题.
无论我如何尝试添加它,CAGradientLayer的第一个似乎都覆盖在图像的顶部,完全遮盖了图像.
其次,渐变本身似乎变暗了很多,就像按钮被禁用一样,但事实并非如此.
这是我的代码:
self.backButton = [[UIButton alloc] initWithFrame:CGRectMake(15, 35, 28, 28)];
[backButton addTarget:self
action:@selector(goBack)
forControlEvents:UIControlEventTouchUpInside];
[backButton setBackgroundColor:[UIColor clearColor]];
CAGradientLayer *buttonGradient = [CAGradientLayer layer];
buttonGradient.frame = backButton.bounds;
buttonGradient.colors = [NSArray arrayWithObjects:
(id)[[UIColor colorWithRed:.0
green:.166
blue:.255
alpha:1] CGColor],
(id)[[UIColor colorWithRed:.0
green:.113
blue:.255
alpha:1] CGColor],
nil];
[buttonGradient setCornerRadius:backButton.frame.size.width / 2];
[backButton.layer insertSublayer:buttonGradient
atIndex:0];
[backButton setImage:[UIImage imageNamed:@"backarrow.png"]
forState:UIControlStateNormal];
[backButton setEnabled:NO];
[topbarView addSubview:backButton];
Run Code Online (Sandbox Code Playgroud) 我在这里有一个UIScrollView我在屏幕中间添加了一个标签,当用户滚动到一个页面时,问题是当动画进行时用户无法滚动到下一页(所有用户)在动画结束之前,似乎已禁用交互.
这是我显示标签的代码.
if(!scrollView.dragging)
[UIView animateWithDuration:0.3
delay:0.3
options:UIViewAnimationOptionCurveEaseOut
animations:^(void){
[vesselNameLabel setFrame:frame];
}
completion:^(BOOL finished){}];
Run Code Online (Sandbox Code Playgroud)
那么我如何在滚动视图中摆脱这种取消用户交互?
我试图在这里将单个PDF页面转换为PNG,并且它完美地工作,直到UIGraphicsGetCurrentContext突然开始返回nil.
我试图在这里回溯我的步骤,但我不确定我知道这发生了什么.我的框架不是0,我看到可能会产生这个问题,但除此之外,一切"看起来"都是正确的.
这是我的代码的开头.
_pdf = CGPDFDocumentCreateWithURL((__bridge CFURLRef)_pdfFileUrl);
CGPDFPageRef myPageRef = CGPDFDocumentGetPage(_pdf, pageNumber);
CGRect aRect = CGPDFPageGetBoxRect(myPageRef, kCGPDFCropBox);
CGRect bRect = CGRectMake(0, 0, height / (aRect.size.height / aRect.size.width), height);
UIGraphicsBeginImageContext(bRect.size);
CGContextRef context = UIGraphicsGetCurrentContext();
CGContextSaveGState(context);
Run Code Online (Sandbox Code Playgroud)
任何人都知道还有什么可能导致零上下文?
是否可以连续按键?
我正在使用keyCommands:拦截在外部键盘上按下的箭头键,但每次按下我只能拨打1个电话.我希望只要按下按键,每隔X毫秒就可以进行多次调用,或者在按下按键和释放按键时调用.
这是我的代码:
- (NSArray *)keyCommands
{
UIKeyCommand *upArrow = [UIKeyCommand keyCommandWithInput:UIKeyInputUpArrow
modifierFlags:0
action:@selector(upArrow:)];
UIKeyCommand *downArrow = [UIKeyCommand keyCommandWithInput:UIKeyInputDownArrow
modifierFlags:0
action:@selector(downArrow:)];
UIKeyCommand *leftArrow = [UIKeyCommand keyCommandWithInput:UIKeyInputLeftArrow
modifierFlags:0
action:@selector(leftArrow:)];
UIKeyCommand *rightArrow = [UIKeyCommand keyCommandWithInput:UIKeyInputRightArrow
modifierFlags:0
action:@selector(rightArrow:)];
UIKeyCommand *leftArrowCmd = [UIKeyCommand keyCommandWithInput:UIKeyInputLeftArrow
modifierFlags:UIKeyModifierCommand
action:@selector(leftArrowCmd:)];
UIKeyCommand *rightArrowCmd = [UIKeyCommand keyCommandWithInput:UIKeyInputRightArrow
modifierFlags:UIKeyModifierCommand
action:@selector(rightArrowCmd:)];
UIKeyCommand *lCmd = [UIKeyCommand keyCommandWithInput:@"l"
modifierFlags:UIKeyModifierCommand
action:@selector(lCmd:)];
UIKeyCommand *rCmd = [UIKeyCommand keyCommandWithInput:@"r"
modifierFlags:UIKeyModifierCommand
action:@selector(rCmd:)];
UIKeyCommand *mCmd = [UIKeyCommand keyCommandWithInput:@"m"
modifierFlags:UIKeyModifierCommand
action:@selector(mCmd:)];
return @[upArrow, downArrow, leftArrow, rightArrow, leftArrowCmd, rightArrowCmd, lCmd, …Run Code Online (Sandbox Code Playgroud) 在Mac应用程序中使用AVPlayer从文件夹中全屏播放随机视频,但是当我尝试播放.vob文件或.mpg文件时,我只会看到一个持续视频持续的黑屏.
AVFoundation不支持从这些容器播放吗?我认为既然他们可以使用QuickTime Player库存,他们也可以使用AVPlayer.
我刚开始从Testflights获取我正在处理的预发布应用程序的崩溃报告,但无论出于何种原因,Xcode都没有正确地象征日志.
构建是可用的(在此版本的Xcode中构建,存档并上载到此计算机上),所以我在这里缺少什么?为什么这些崩溃日志不是象征性的?
我在NSMenu有一个非常奇怪的问题.
我使用的大约一半的NSMenuItem通过NSMenuItem上的setView:方法对它们进行自定义视图.在这个自定义视图中,我实现了mouseUp:当用户点击菜单项时捕获,这在我第一次打开菜单时工作正常.
第二次,如果我在点击时保持鼠标稳定,则不会在任何这些菜单项上调用mouseUp.但是,如果我单击下来,然后稍微移动光标,并释放mouseUp被调用.所以出于某种原因,有些事情正在拦截这些事件,但只有第二次出现菜单,如果光标在mouseDown事件之后移动,它就会通过.(出于某种原因,在菜单的第一次或第二次出现时,mouseDown永远不会被调用).
有人知道这里可能会发生什么吗?什么是拦截我的鼠标事件,为什么它们会在菜单的第一次出现时传递到我的自定义视图,而不是第二次出现?
突然,我在上传应用程序的新版本时开始从Testflight获取此信息:
此版本使用Developer证书进行签名,只能由启用了Developer功能的设备安装.我们建议使用分发配置文件进行签名以获得最佳结果.
我的用户在安装应用时遇到问题.我一次又一次地浏览了项目设置,但一切看起来都正确.
我已经将团队配置文件设置为调试和发布的配置文件,我甚至改为不同的团队,但仍然是同样的问题.
我在这里找错了地方吗?
突然之间,我的一个项目将不再在Xcode中编译.它只是停留在"复制swiftdocs",永远不会过去.
Xcode完全响应,此处的最后一行表示它已成功复制x86_64.swiftdoc.
我所有的旧项目都编译得很好.
尝试清除派生数据和所有Xcode缓存.我还在项目上做了一个干净整洁的构建文件夹.甚至删除了Xcode,再次从App Store下载了7.0.1,但仍然是同样的问题.
世界上有什么不对吗?
所以在谷歌搜索后,我的理解是,当我在基于NSDocument的应用程序中使用捆绑包作为我的文档时,我必须在每次要保存时编写整个捆绑包?由于我正在向文档中添加大量视频文件,因此这开始出现问题.
有没有办法解决这个问题而不抛弃NSDocument?
ios ×7
cocoa ×2
macos ×2
testflight ×2
xcode ×2
avfoundation ×1
avplayer ×1
bundle ×1
calayer ×1
certificate ×1
cocoa-touch ×1
compilation ×1
crash ×1
keyboard ×1
logging ×1
nsdocument ×1
nsmenu ×1
nsmenuitem ×1
objective-c ×1
pdf ×1
swift ×1
uianimation ×1
uibutton ×1
uikeycommand ×1
uiresponder ×1
uiview ×1
video ×1