Xcode 6 beta4, UIButton não é responsável pela coleçãoviewcell
-
20-12-2019 - |
Pergunta
Estou usando o Xcode 6.0 beta 4, acho que os botões no UICollectionViewCell
não é resposta à torneira.
Detalhes como:
UICollectionViewController
--- UICollectionViewCell
------ UIButton
(UIButton
tem dois autolayout
restrições para colocar o UIButton
no centro vertical e no centro horizontal no Cell
)
Agora faça o cell
tamanho é algo como:(300, 1000)
Execute o aplicativo no simulador de iPhone ou dispositivo com iOS 7.0 ou 7.1.x, o botão não é tocável, mas teste no simulador iOS 8.0 está OK.Além disso, se eu mudar a célula size
para (300, 200)
, o botão funciona.
Acho que é um bug nesta versão beta do Xcode, certo?
E onde posso enviar o bug para a Apple?
Solução
Eles se esqueceram de definir uma máscara automática para o contentView de um UICollectionViewCell
isso conserta
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleHeight | UIViewAutoresizingFlexibleWidth;
Outras dicas
Parece que isso não é realmente um bug, mas um problema de incompatibilidade ao direcionar dispositivos iOS 7 usando o Xcode 6. postagem da ecotaxa descreve isso com mais detalhes, mas aqui está a resposta do Apple DTS:
No iOS 7, as visualizações de conteúdo das células eram dimensionadas por meio de máscaras de redimensionamento automático.No iOS 8, isso foi alterado, as células pararam de usar as máscaras de redimensionamento automático e passaram a dimensionar a visualização do conteúdo em layoutSubviews.Se uma ponta for codificada no iOS 8 e depois decodificá-la no iOS 7, você terá uma visualização do conteúdo sem uma máscara de redimensionamento automático e nenhum outro meio para dimensionar a si mesmo.Portanto, se você alterar o quadro da célula, a visualização do conteúdo não seguirá.
Os aplicativos que estão sendo implantados no iOS 7 terão que contornar isso dimensionando a própria visualização do conteúdo, adicionando máscaras de redimensionamento automático ou adicionando restrições.
A solução de Alexey acima resolverá o problema:
- (void)awakeFromNib
{
// Fix for iOS 7 devices targeted using Xcode 6.
self.contentView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight;
}