由于用UIButton這個屬性做過一些東西,但是對它的規律始終不太了解,雖然蘋果官方文檔的解釋大體上可以理解為,這個屬性設置的是內邊距,更通俗點說,是規定,Button向內的多少區域其它控件是不能進入的。但是總存在一些奇怪的現象,所以我做了個Demo得出下面的規律。先看demo??梢韵螺d自己嘗試。
再來研究水平方向,我以為水平方向也如此。但是并非如此,水平方向是不會相互作用的,如果水平兩個方向的推進會將原來的Label進行壓縮,但是Label的面積不會變,也就是說給Label留下的寬度如果小于Label的寬度,那么Label就會被壓成這個寬度,然后會變長,所以當我們水平方向上壓縮到0時候,Label就會不見了,因為此時Label相當于無限的長,無限的細致。就算水平某一方推進的已經覆蓋掉了另外一方,Label還是會不存在。因為此時寬度是無限趨向于0
- (void)viewDidLoad { [super viewDidLoad]; NSLog(@"before setting insets%@", NSStringFromCGRect(self.button.frame)); //self.button.contentEdgeInsets = UIEdgeInsetsMake(0, 10, 71, 10); [self.button setTitle:@"testestes" forState:UIControlStateNormal]; self.button.titleLabel.numberOfLines = 0; self.button.titleLabel.backgroundColor = [UIColor blueColor]; self.button.frame = CGRectMake(198, 285, 44, 71); self.button.backgroundColor = [UIColor redColor]; [self.button layoutIfNeeded]; NSLog(@"after setting titleLabel's frame = %@", NSStringFromCGRect(self.button.titleLabel.frame)); //self.button.contentEdgeInsets = UIEdgeInsetsMake(0, 22, 0,21); // 研究水平方向測試1 //self.button.contentEdgeInsets = UIEdgeInsetsMake(0, 21, 0,21); // 研究水平方向測試2 //self.button.contentEdgeInsets = UIEdgeInsetsMake(0, 20, 0,21); // 研究水平方向測試3 // self.button.contentEdgeInsets = UIEdgeInsetsMake(20.5, 0, 30.5,0); // 研究豎直方向測試2 [self.button layoutIfNeeded]; NSLog(@"after setting insets titleLabel's frame = %@", NSStringFromCGRect(self.button.titleLabel.frame)); NSLog(@"after setting insets%@", NSStringFromCGRect(self.button.frame)); // Do any additional setup after loading the view, typically from a nib. */}
當UIButton的寬高不滿足上面的情況時候
新聞熱點
疑難解答