我有一个UIScrollView,它包含一个子UIView,insetView
,用于显示在运行时交换进出的其他UIView。这些子视图不仅是图像,还是单视图对象。它们是包含按钮,标签,图像等的全功能视图。
我看到的问题是,当我放大和缩小时,我注意到我的按钮边缘,这些闪烁的线条不断出现。关于这些线条的奇怪之处在于它们可以出现在我的按钮的任何一侧,但它们从不会一直延伸到按钮的角落。
我可以持续地,慢慢地放大和缩小,当其中一条线出现时,我可以轻轻地捏住并伸展我的手指,我会看到同一条线消失并再次出现,并再次以非常公平的一致性。 / p>
这是缩放算法的错误吗?有什么方法可以阻止这个吗?
这是一个不影响应用程序功能的小细节,但它会大大影响抛光程度。在有足够按钮的屏幕上,这实际上非常烦人。
请参阅下面的两张图片作为示例。这些是从我的iPad上的屏幕截图中获取的,然后我将它们缩小了一些,以便您可以看到突出显示。像素化来自于切断照片编辑器中的消除锯齿,而不是来自iPad。
这是一个带有两个按钮的示例,彼此相邻。第一张图片看起来是正确的,第二张是错误的。
良好形象
错误图片
答案 0 :(得分:1)
也许缩放设置不正确,尤其是如果您只使用IB。请参阅示例代码。添加到“zoomingContainer”的任何内容都将被正确缩放。
@interface ViewController : UIViewController <UIScrollViewDelegate> {
UIView *zoomingContainer;
}
@end
@implementation ViewController
- (void)viewDidLoad {
[super viewDidLoad];
UIScrollView *scrollView = [[UIScrollView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
scrollView.contentSize = CGSizeMake(self.view.bounds.size.width, self.view.bounds.size.height);
scrollView.delegate = self;
scrollView.maximumZoomScale = 4.0;
[self.view addSubview:scrollView];
zoomingContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, self.view.bounds.size.width, self.view.bounds.size.height)];
[scrollView addSubview:zoomingContainer];
UIButton *saveButton = [UIButton buttonWithType:UIButtonTypeCustom];
saveButton.frame = CGRectMake(50,100, 100,40);
[saveButton setBackgroundImage:[UIImage imageNamed:@"RedButton.png"] forState:UIControlStateNormal];
[saveButton setTitle:@"Save" forState:UIControlStateNormal];
saveButton.titleLabel.font = [UIFont boldSystemFontOfSize:20];
[zoomingContainer addSubview:saveButton];
}
#pragma mark UIScrollViewDelegate
- (UIView *)viewForZoomingInScrollView:(UIScrollView *)scrollView {
return zoomingContainer;
}
#pragma mark -
@end
的链接
答案 1 :(得分:0)
我找到了答案。按钮默认为圆角矩形。这意味着它在按钮的背景中绘制一个矩形。
我是iOS开发的新手,所以当我在IB中为每个按钮设置Image时,我没有意识到UIButton类仍会绘制矩形,即使它被我的过度绘制图片。显然,在某些缩放间隔,矩形的边缘可以显示在按钮上。我不认为这应该发生,是的,是一个错误。但是,解决方案是将IB中的按钮类型从Rounded Rect
更改为Custom
。