我现在的情况是,我正在尝试调整标签的大小,我可以使用UIPinchGestureRecognizer轻松地调整它的大小,但这样做只是调整标签的框架。
func handleScale(recognizer: UIPinchGestureRecognizer)
{
recognizer.view!.transform = CGAffineTransformScale(recognizer.view!.transform,
recognizer.scale, recognizer.scale)
recognizer.scale = 1
recognizer.view!.frame = CGRectMake(recognizer.view!.frame.minX,recognizer.view!.frame.minY, recognizer.view!.frame.width, recognizer.view!.frame.height)
} 我希望能够更改标签的边界,以便在新的框架尺寸中再次呈现文本。我只尝试调整标尺中标签边界的大小,但不能正常工作。
我做了一个按钮,点击后,它会根据标签框设置标签的边界。尽管它似乎不起作用。
label.bounds = CGRectMake(0, 0, CGRectGetWidth(self.label.frame), CGRectGetHeight(self.label.frame))上面所做的是将其调整为不同于框架的坐标。
这是按钮操作中的打印日志:
Frame Before(-54.2193053279009,279.213449112017,513.438610655802,85.5731017759669)
Bounds Before(0.0,0.0,300.0,50.0)
label.bounds = CGRectMake(0, 0, CGRectGetWidth(self.label.frame), CGRectGetHeight(self.label.frame))
Frame After(-236.8653448536,248.7724425244,878.7306897072,146.4551149512)
Bounds After(0.0,0.0,513.438610655802,85.5731017759669)它所做的是,一旦设置了边界,它就会改变帧的值。有人知道怎么解决这个问题吗?
我已经尝试从先前的帧值设置帧,但仍然不起作用。
发布于 2015-04-18 12:05:43
您正在运行scenario described in the documentation for UIView setTransform:
警告
如果此属性不是标识转换,则frame属性的值未定义,因此应忽略。
如果您的目标是简单地在视觉上收缩标签,则只需应用变换而不调整框架。
如果要缩小标签的几何矩形,同时保持文本大小不变,可以使用CGRectApplyAffineTransform(CGAffineTransformMakeScale(recognizer.scale, recognizer.scale))生成新框架。如果发现文本仍未更新,则应尝试在标签上调用setNeedsLayout或setNeedsDisplay (取决于其图形的处理方式)。
https://stackoverflow.com/questions/27779048
复制相似问题