如果我执行以下操作,则titleView
将被拉伸:
UIImage * img =[UIImage imageNamed:@"isikota_small.png"];
UIImageView * uiImage= [[UIImageView alloc]initWithImage:img];
self.navigationItem.titleView = uiImage;
PO(self.navigationItem.titleView);
如果我做
UIImage * img =[UIImage imageNamed:@"isikota_small.png"];
UIImageView * uiImage= [[UIImageView alloc]initWithImage:img];
uiImage.frame = CGRectMake(0,0,66,33);
uiImage.autoresizingMask = UIViewAutoresizingFlexibleHeight;
//[self.navigationItem.titleView addAndResizeSubView:uiImage]; doesn't work
self.navigationItem.titleView = uiImage;
PO(self.navigationItem.titleView);
标题视图也将被拉伸。
如果我这样做:
UIImage * img =[UIImage imageNamed:@"isikota_small.png"];
UIImageView * uiImage= [[UIImageView alloc]initWithImage:img];
uiImage.frame = CGRectMake(0,0,66,33);
uiImage.autoresizingMask = UIViewAutoresizingFlexibleHeight;
//[self.navigationItem.titleView addAndResizeSubView:uiImage]; doesn't work
UIView * uiv = [[UIView alloc]init];
[uiv addSubview:uiImage];
uiv.frame = CGRectMake(127, 0, 66, 33);
uiv.autoresizingMask=UIViewAutoresizingFlexibleHeight|UIViewAutoresizingFlexibleWidth;
self.navigationItem.titleView = uiv;
PO(self.navigationItem.titleView);
不知怎么的,苹果把uiv.frame
改成了CGRectMake(127, 6, 66, 33)
。
必须有一个优雅的解决方案。
当您将自定义视图用作titleView
,以及tableViews和其他类似用例中的页脚和页眉时,iOS将忽略视图框架的偏移部分,或以某种不易预测的方式更改它。为了解决这个问题,你需要创建一个容器视图,这样你的容器就有偏移量(0,0):
试试这样的东西:
UIImage * img =[UIImage imageNamed:@"isikota_small.png"];
UIImageView * uiImage= [[UIImageView alloc]initWithImage:img];
uiImage.frame = CGRectMake(127,0,66,33);
UIView * uiv = [[UIView alloc]init];
[uiv addSubview:uiImage];
uiv.frame = CGRectMake(0, 0, 66+127, 33);
self.navigationItem.titleView = uiv;
我不确定自动呼吸口罩是否也会把它扔掉,所以试着不戴口罩,看看你是否能得到你想要的行为。