在缩小父uiview的同时保持uilabel大小和字体大小不变

时间:2012-10-21 19:36:35

标签: ios user-interface user-controls uilabel uigesturerecognizer

我正在实现一个带有轨迹栏的应用程序,它本身就是一个视图,它需要显示最小值和最大值(与该栏关联的变量),所以我在左上角和右上角添加了两个标签它的。如果没有启用滑块,可以考虑这样的事情:

http://tdwiki.daverabelink.net/images/4/42/TrackbarSample.jpg

我希望能够通过捏合手势缩小或放大此视图,以下代码可以正常工作:

-(void) handlePinch:(UIPinchGestureRecognizer *)gr
{
    //Shrinking
    if(gr.scale < 1)
    {
        //Get screen width
        CGFloat screenWidth = [UIScreen mainScreen].bounds.size.width;
        //If the view's would be size is smaller than half the screen's size then don't do anything
        //Otherwise shrink the view
        if(self.frame.size.width * gr.scale >= screenWidth / 2)
        {
            //Only scale on x axis, y axes stays the same
            self.transform = CGAffineTransformScale(self.transform, gr.scale, 1);
        }

    }
    //Magnifying
    else if (gr.scale > 1) 
    {
        //Only scale on x axis, y axes stays the same
        self.transform = CGAffineTransformScale(self.transform, gr.scale, 1);
    }

    //Set scale amount back to 1
    gr.scale = 1;
}

问题是当视图缩小时,左上角和右上角的标签也会缩小,并且字体大小会变小。由于我只是水平缩放视图,因此看起来很奇怪。我想将标签的大小设置为常量,并缩小视图中的所有其他内容。

我试图在缩小后分配一个带有原始标签尺寸的新框架矩形,但它没有用。你有什么提示吗?

编辑:设置minimumFontSize属性也不起作用(我不尝试使用minimumScaleFactor,因为我还在使用ios 5 sdk)

2 个答案:

答案 0 :(得分:0)

我认为这种行为实际上是由您拥有标签的视图控制的 - 它不受标签本身的控制。 UIView的autoresizesSubviews属性默认为YES,当UIView收缩时,它会使视图中的任何内容收缩。由于您的捏合手势实际上附加到标签后面的视图而不是标签本身,因此您的收缩会缩小视图,然后视图会缩小标签。尝试设置autoresizesSubviews = NO,并告诉我这是否适合您。

答案 1 :(得分:0)

我找到了解决方案,将我的轨迹栏与应支持捏合手势的视图分开。事先在其中包含轨迹栏是不好的设计,在努力研究更复杂的东西之前检查你的ui设计。