我想改变anchorPoint
,但保持视图在同一个地方.我试过NSLog
-ing分词self.layer.position
和self.center
他们都保持不变,无论更改anchorPoint的.然而我的观点却在变化
关于如何做到这一点的任何提示?
self.layer.anchorPoint = CGPointMake(0.5, 0.5);
NSLog(@"center point: %f %f", self.layer.position.x, self.layer.position.y);
self.layer.anchorPoint = CGPointMake(1, 1);
NSLog(@"center point: %f %f", self.layer.position.x, self.layer.position.y);
Run Code Online (Sandbox Code Playgroud)
输出是:
2009-12-27 20:43:24.161 Type[11289:207] center point: 272.500000 242.500000
2009-12-27 20:43:24.162 Type[11289:207] center point: 272.500000 242.500000
Run Code Online (Sandbox Code Playgroud) 我的问题与此问题非常相似当clipToBounds = NO没有得到明确的答案时,没有绘制外界.
基本上我有一个UIView,我想从它的中心画一条线到屏幕的边缘.计算这些点的位置很容易,使用[self convertPoint:(CGPoint){0,0} fromView:[self superview]];
(找到关于我视图的超视图的原点.但是当我从我的视图的drawRect中绘制一条线时:它会被剪切到我的视图边界.
有没有办法在我的观点范围外画画?我试过更改clipsToBounds属性,但它似乎没有任何效果.
我不能从superview中绘制我的线条,因为我需要使用多个视图来执行此操作,有些将在其他视图之前...从superview的drawRect中找出图层看起来是个坏主意.
同样地,我认为我不能只调整我的视图范围以包含整个屏幕,因为我的视图需要动态调整大小...边界必须是巨大的(> 20,000点平方)才能工作.
所以我刚注意到,在我的iPod Touch上,当我的应用程序触发使用AVAudioPlayer播放的短wav文件时,音乐会暂停.这是正常的吗?
我找不到任何对此的引用,似乎会在某处注意到.在播放我的声音时,有没有办法让音乐继续播放?
A有一个视图控制器,它创建一个"下载器"对象,它有一个对视图控制器的引用(作为委托).如果成功下载项目,下载程序将回调视图控制器.只要你留在视图上,这样就行得很好,但是如果你在下载完成之前导航,我就会得到EXC_BAD_ACCESS
.我理解为什么会发生这种情况,但有没有办法检查对象是否仍然被分配?我试着用测试delegate != nil
,和[delegate respondsToSelector:]
,但它扼流圈.
if (!self.delegate || ![self.delegate respondsToSelector:@selector(downloadComplete:)]) {
// delegate is gone, go away quietly
[self autorelease];
return;
}
else {
// delegate is still around
[self.delegate downloadComplete:result];
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以,
a)让下载器对象保留视图控制器
b)在视图控制器中保留一组下载程序,并在取消分配视图控制器时将其委托值设置为nil.
但我想知道是否有一种更简单的方法,我只测试委托地址是否包含有效对象?
我知道我可以打开和关闭权限System Preferences -> Security & Privacy -> Privacy -> Contacts
,但我想要做的是强迫OS X再次请求许可.这是出于测试目的...即我可能有一个在显示权限请求对话框时被触发的错误.
存储"问"标志的任何想法,所以我可以把它吹掉?我已经检查~/Library/Application Support/AddressBook/
了一些其他明显的地方.
我UIImage
为我的UIButton 设置了一个[ myButton setImage:forState:];
和我设置它contentMode
使用[[myButton imageView] setContentMode:UIViewContentModeScaleAspectFit];
但是当你点击按钮时,它会回到UIViewContentModeScaleToFill
并拉伸我的图像.
使用adjustsImageWhenHighlighted
修复这个,但后来我松了变暗效果,我想保留.
有关如何应对此问题的任何建议?
我需要在运行时测试块的可用性,因此我可以处理与iOS 3的向后兼容性.任何提示?
编辑:到目前为止,我正在做if (!NSClassFromString(@"NSBlockOperation")) {...}
似乎工作......
我做了一个沙盒iTunes用户,买了一个项目.这工作但我的代码中有一些问题用于显示项目.所以,我想重新购买它再次测试.问题是,我无法清除我的购买.我退出了我的沙盒用户,删除了应用程序并重新安装了它,更改了iTunes用户几次......该项目仍显示为已购买.
我正在使用MKStoreKit.
有任何想法吗?
我从NSUserDefaults加载到对象的init方法中.我可以在对象的dealloc方法中保存到NSUserDefaults吗?
完全像:
-(void)dealloc {
NSUserDefaults *userDefaults = [NSUserDefaults standardUserDefaults];
[userDefaults setObject:self.filenamesArray forKey:self.defaultsKey];
[userDefaults synchronize];
self.filenamesArray = nil;
self.defaultsKey = nil;
[super dealloc];
}
Run Code Online (Sandbox Code Playgroud)
好,坏,好吗?如果它不好,哪里会更好.
编辑:
感谢您的详细回复.所有这些都是有道理的.我发现为什么这是一个保存到用户默认值的不好的地方的另一个原因是,只有当一个对象很好地解除分配时才会调用dealloc.如果我的应用程序被杀死,此代码永远不会运行.同样,如果将应用程序推入后台(iOS 4),则无法运行.我也删除了显式[userDefaults synchronize]
调用.这让我有些紧张,但我相信苹果就是这个.:)
我究竟做错了什么?这是我创建+填充我的scrollView的方法
-(void)viewDidAppear:(BOOL)animated {
UIImageView *imgView = [[UIImageView alloc] initWithImage:[UIImage imageNamed:@"bigimage.jpg"]];
imgView.contentMode = UIViewContentModeScaleAspectFit;
scrollView = [[UIScrollView alloc] initWithFrame:self.view.frame];
scrollView.contentSize = imgView.frame.size;
scrollView.minimumZoomScale = scrollView.frame.size.width / scrollView.contentSize.width * 0.99;
scrollView.maximumZoomScale = 2;
[self.view addSubview:scrollView];
[scrollView addSubview:imgView];
[scrollView setZoomScale:0.5 animated:YES];
NSLog(@"current zoomScale: %f", scrollView.zoomScale);
[imgView release];
}
Run Code Online (Sandbox Code Playgroud)
NSLogged zoomScale为1.0,图像以完整大小清晰显示.捏缩放不起任何作用.我已经尝试了几乎所有我能在网上找到的东西,但是每个人似乎都在做这个,并且它适用于他们.
非常感谢帮助!
iphone ×6
ios ×3
objective-c ×3
audio ×1
cocoa ×1
cocoa-touch ×1
contentmode ×1
dealloc ×1
drawrect ×1
image ×1
macos ×1
mkstorekit ×1
osx-lion ×1
scaling ×1
security ×1
synchronize ×1
uibutton ×1
uiscrollview ×1
uiview ×1