使用生成的中心点

时间:2016-06-12 21:34:17

标签: ios objective-c uibutton uitabbar

我正在尝试在UITabBar中间制作一个中心UIButton。我的第一个做法是通过反复试验找出UITabBar的确切中心

UIButton *cameraButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *image = [UIImage imageNamed:@"show-sheet"];
cameraButton.frame = CGRectMake(self.tabBar.frame.size.width - image.size.width - 187, -image.size.height + 44, image.size.width, image.size.height);
[cameraButton setImage:image forState:UIControlStateNormal];
[cameraButton addTarget:self action:@selector(imClicked:) forControlEvents:UIControlEventTouchUpInside];

[self.tabBar addSubview:cameraButton];

正如您所看到的,我使用了x和y的硬编码值,这不适用于不同的屏幕尺寸,此解决方案适用于iPhone 6+屏幕尺寸。我试图找出适用于所有屏幕尺寸的坐标。经过一些谷歌搜索后,我发现通过做这样的事情来实现所需的行为

UIButton *cameraButton = [UIButton buttonWithType:UIButtonTypeCustom];
UIImage *image = [UIImage imageNamed:@"show-sheet"];
cameraButton.frame = CGRectMake(0, 0, image.size.width , image.size.height);
[cameraButton setBackgroundImage:image forState:UIControlStateNormal];
[cameraButton addTarget:self action:@selector(imClicked:) forControlEvents:UIControlEventTouchUpInside]; 
CGFloat heightDifference = cameraButton.frame.size.height - self.tabBar.frame.size.height;
if (heightDifference < 0) {
    NSLog(@"heightDifference");
    cameraButton.center = self.tabBar.center;
} else {
    NSLog(@"not heightDifference");
    CGPoint center = self.tabBar.center;
    center.y = center.y - heightDifference/2.0;
    cameraButton.center = center;
}
[self.tabBar addSubview:cameraButton];

使用这种方法隐藏按钮,我无法在屏幕或标签栏上看到它。我做了一些调试,发现按钮的中心与标签栏的中心完全相同,但没有显示。关于发生了什么的任何想法?

编辑:我检查了一个视图层次结构,发现该按钮位于中心,但下降了大约40分。

0 个答案:

没有答案